ID非公開

2020/9/27 12:30

22回答

合計と平均を求めるプログラムを作りましたが、平均の小数点以下が表示されません。どうしたらいいですか?

合計と平均を求めるプログラムを作りましたが、平均の小数点以下が表示されません。どうしたらいいですか? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main(void) { int n; int sum = 0; float mean; while (scanf("%d", &n) != EOF) { sum = sum + n; mean = sum / n; } printf("sum = %d\nmean = %1.f\n",sum,mean); return 0; }

ベストアンサー

0

問題点は3つあります。 (1)データの個数がカウントされていません (2)整数同士の割り算には小数点が付きません (3)"%1.f" ではなくて、"%.1f"では? 解説動画を作りました。よろしければご覧ください。 https://youtu.be/UQJWVCu2Hok ~プログラム例~ #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main(void) { int 入力値; if (scanf("%d", &入力値) == 1) { int sum = 入力値; int データ個数 = 1; while (scanf("%d", &入力値) == 1) { sum = sum + 入力値; データ個数 = データ個数 + 1; } float mean = (float)sum / データ個数; printf("sum = %d\nmean = %.1f\n", sum, mean); } return 0; }

ThanksImg質問者からのお礼コメント

解決しました。ありがとうございました!

お礼日時:9/27 20:09

その他の回答(1件)

0

整数を整数で除すと結果は整数になります。 平均の計算は全ての入力が終了した後に一回計算すればいいです。今のコードは入力するたびに平均を計算していて無駄です。

ID非公開

質問者

2020/9/27 13:35

mean = sum / n;をprintf...の1行前に挿入しても結果が変わりません。まだ間違ってますか? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main(void) { int n; int sum = 0; float mean; while (scanf("%d", &n) != EOF) { sum = sum + n; } mean = sum / n; printf("sum = %d\nmean = %1.f\n",sum,mean); return 0; }