【C言語】 10名分のテストの成績を記載したファイルTEST.txtを読み込み,各点数、10名の合計点,10名の平均点,最高点,最低点を表示するプログラムを作成していただきたいです。
【C言語】 10名分のテストの成績を記載したファイルTEST.txtを読み込み,各点数、10名の合計点,10名の平均点,最高点,最低点を表示するプログラムを作成していただきたいです。 よろしくおねがい致しますm(*_ _)m
ベストアンサー
プログラム例です。 「10名」と固定されていることを前提としています。 また、点数の最大が何点なのか(100点なのか、10点なのか、1000点なのか)わからないので、int型で扱える最大数を前提として考えています。 whileのところは、for文を使った別の記述方法もあるので、例2として記述しておきます。 【プログラム例1】 #include <stdio.h> #include <limits.h> int main() { FILE* fp = fopen("TEST.txt", "r"); if (fp) { int data[10]; int i = 0; int sum = 0; int max = 0; int min = INT_MAX;//2147483647 INT_MAXは、intで扱える最大数 while (fscanf(fp, "%d", &data[i]) == 1) { sum += data[i]; if (min > data[i]) min = data[i]; else if (max < data[i]) max = data[i]; printf("%d人目:%d点\n", i + 1, data[i]); ++i; } printf("10名の合計点:%d\n",sum); printf("10名の平均点:%.1f\n", (float)sum / (sizeof data / sizeof * data)); printf("最高点 :%d\n",max); printf("最低点 :%d\n",min); } else printf("ファイルが開けませんでした。\n"); } 【プログラム例2】 int main() { FILE* fp = fopen("TEST.txt", "r"); if (fp) { int data[10]; int sum = 0; int max = 0; int min = INT_MAX;//2147483647 INT_MAXは、intで扱える最大数 for (int i = 0; fscanf(fp, "%d", &data[i]) == 1;++i) { sum += data[i]; if (min > data[i]) min = data[i]; else if (max < data[i]) max = data[i]; printf("%d人目:%d点\n", i + 1, data[i]); } printf("10名の合計点:%d\n", sum); printf("10名の平均点:%.1f\n", (float)sum / (sizeof data / sizeof * data)); printf("最高点 :%d\n", max); printf("最低点 :%d\n", min); } else printf("ファイルが開けませんでした。\n"); }
質問者からのお礼コメント
とても丁寧で分かりやすい回答をしてくださってありがとうございました!
お礼日時:1/17 17:00