2017-02-12 9 views
0

ユーザーが入力した高温と低温の平均を計算しようとしていますが、含めることができる日数は1〜4ですが、これについて行く。私が書いたコードは、完全に無関係な数字になります。ここに私のコードは次のとおりです。配列の一部の平均を計算する

#include <stdio.h> 

int main (void) 
{ 
    int i; 
    int limit; 
    int day[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
    int high[10],low[10]; 

    printf("---===IPC Temperature Analyzer V2.0===---\n"); 

    printf("Please enter the number of days between 3 and 10, inclusive: "); 
    scanf("%d", &limit); 
    while (limit <= 2 || limit >= 11) { 
     printf("Invalid entry, please enter a number between 3 and 10, inclusive: "); 
     scanf("%d", &limit); 
    } 

    for(i = 0;i < limit; i++) { 
     printf("Day %d - High: ", day[i]); 
     scanf("%d", &high[i]); 
     printf("Day %d - Low: ", day[i]); 
     scanf("%d", &low[i]); 
    } 

    printf("\nDay Hi Low\n"); 
    for (i = 0; i < limit; i++) { 
     printf("%d %d %d\n", day[i], high[i], low[i]); 
    } 

    int max = 0; 
    int min = 0; 

    for (i = 0; i < limit; i++) { 
     if (high[max] < high[i]) 
      max = i; 
     if (low[min] < low[i]) 
      min = i; 
    } 

    printf("\nHighest temperature was: %d on day %d", high[max], day[max]); 
    printf("\nLowest temperature was: %d on day %d ", low[min], day[min]); 

    int n; 
    int avg = high[i] + low[i]/i; 

    printf("\nEnter a number between 1 and 4 to see the average temperature for the entered number of days, enter a negative number to exit\n"); 
    scanf("%d", &n); 

    while (n > 4) { 
     printf("Invalid entry, please enter a number between 1 and 4, inclusive: "); 
     scanf("%d", &n); 
    } 

    while (n < 0) { 
     printf("Goodbye!\n"); 
     exit(0); 
    } 

    for (i = 0; i < n; i++) { 
     printf ("The average temperature up to day %d is: %d", day[i], avg); 
    } 
    return 0; 
} 
+3

あなたのプログラムで。最後のループではその番号も変わらないので、繰り返し報告されているのは不思議ではありません。 – WhozCraig

答えて

2

私はあなたの見当違いの表現int avg = high[i] + low[i]/iを想定し、また意味が私には正しいように見えるしません:

まず:私はあなたがループ内の各特定の日の平均を印刷するとしますi : 0..n-1は、しかし、あなたはループの外で一度だけ値を計算する(そして、あなたは意味あなたの場所で何iと思うかもしれ

第二:あなたはi値すなわちハイとローではなく、それぞれの日のための唯一の2つの値を、持っています、そうです、特定のdの平均気温それはavg = (high[i] + low[i])/2です。また、中括弧に注意してください。中括弧は、コード内の演算子の優先順位とは異なる演算子です。特定の日までの平均の平均を計算する場合は、式を明示的にします(例: averageOfDayとoverallAverageを区別して

第3回:あなたはavgがintであるはずですか?私はフロートを使用することをお勧めします。 `あなたがi``の値はその時点で何であるかについて考えてよいでしょう。[I] +低あなたはavg`がint平均=ハイ `からである`計算する唯一の場所は、[I]/I

float avgSum = 0.0; 
for (i = 0; i < n; i++) { 
    float avgOfDay = (high[i] + low[i])/2.0; 
    avgSum += avgOfDay; 
} 
float overallAvg = avgSum/n; 
printf ("The average temperature up to day %d is: %f", day[n-1], overallAvg); 
+0

私は実際に1~4の間の日数の平均を取得しようとしているので、ユーザーが3と入力すると、1日目、2日目、3日目の平均値を計算する必要があります。 – Jinto

+0

ああ、OK。私はあなたがループで "過大な"平均を印刷しているという事実を誤って解釈しました。編集済みの回答を参照してください... –

+0

それは今動作しています!しかし、私は最終日だけを出力したいのですが、毎日の平均が表示されます。例えば、ユーザーが平均3日目を望む場合、1日目までの平均値、2日目までの平均値、3日目までの平均値が表示されます。 また、avgSumとavgOfDay?私はこれまでにそれを見たことがないと思う。 – Jinto