基本的に、配列の最大サイズは10で、ユーザーは最大10個の値を入力できます。ユーザーが-1または0を入力して10個の値を入力する前にループが停止し、次のループに進みます。私の問題は、10の値を入力するまで完全に動作することです。結果は10の代わりに9で除算され、配列に9つの値があることが表示されます。配列内の10個の値でプログラムが機能しない
#include <stdio.h>
int main(void)
{
float numbers[10];
int i;
int n;
int count =0;
for(i = 0; i<10; i++)
{
scanf("%f", &numbers[i]);
if(numbers[i] == -1)
break;
if(numbers[i] == 0)
break;
count++;
}
n = count-1;
float sum = 0;
float average;
for(i = 0; i<=n; i++)
{
sum = sum + numbers[i];
}
average = sum/count;
printf("The average price of the %d products is %.2f.\n", count, average);
return 0;
} //this is the fixed solution.
2番目のforループでは 'i <9 'です。これは' numbers [0] 'から' numbers [8] 'への' 9 'の値です。 –
論理を再考してください。入力が0または-1でないかどうかをチェックするだけで 'count'をインクリメントする必要があります。したがって、これらの2つの条件を 'count ++' _after_に移動してください。 'n = count - 1'を' n = count'にも変更することを忘れないでください!また、 'n'や' count'を取り除いて一つの変数だけを使うこともできます。さらに、if ... ifの代わりに 'if ... else if'を使用することもできます。これは、両方の条件が真でないためです。 –
が削除されました。私のポイントに誤りがあります。 – Tursko