前提・実現したいこと
EOFを入力したらそれまでに入力した整数の平均値を求められるようにしたいです。
発生している問題・エラーメッセージ
EOFで途中で止めずに最後まで20個の整数を入力した場合の平均値はちゃんとでますが、EOFで止めた場合の平均値が正しくでません。
該当のソースコード
#include <stdio.h> #include <math.h> double average(int v[], int n) { int i; int sum = 0; double AVE = 0; for (i = 0; i < n; i++) sum += v[i]; AVE = sum / n; return AVE; } int main(void) { int n = 0; int v[20]; double AVE; printf("整数を入力してください\n"); do { scanf("%d", &v[n]); n++; } while (n < 20 && v[n] != EOF); AVE = average(v, n); **printf("%d", n);** printf("平均値は%.1f", AVE); return 0; }
試したこと
if文などを使って見たのですがうまくいきません。
補足情報(FW/ツールのバージョンなど)
実行すると5個しか入力していないのに、整数の個数が20個と出てきてしまいます。
このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
回答2件
あなたの回答
tips
プレビュー