できたのでメモです。
プログラム
#include <iostream>
#define STUDENT 6
#define SUBJECT 2
int main()
{
int tensu[STUDENT][SUBJECT];
int sum_sub[SUBJECT] = { 0 };
int sum_stu[STUDENT] = { 0 };
int ave[STUDENT][SUBJECT];
int i, j;
for (i = 0; i < STUDENT; i++) {
printf("----%d人目の点数----\n",i+1);
for (j = 0; j < SUBJECT; j++) {
if (j == 0) {
printf("国語:");
}
else {
printf("数学:");
}
scanf_s("%4d",&tensu[i][j]);
sum_stu[i] += tensu[i][j]; //生徒一人の国語と数学の合計点
sum_sub[j] += tensu[i][j]; //科目ごとの合計点
}
putchar('\n');
}
//科目ごとの合計点
printf("----科目ごとの合計点と平均点は以下の通りです。----\n");
for (i = 0; i < SUBJECT; i++) {
switch (i) {
case 0:printf("国語の合計点:"); break;
case 1:printf("数学の合計点:"); break;
}
printf("%d\n", sum_sub[i]);
switch (i) {
case 0:printf("国語の平均点:"); break;
case 1:printf("数学の平均点:"); break;
}
printf("%.1f\n",((double)sum_sub[i])/STUDENT);
}
//生徒ごとの合計点
printf("\n----生徒ごとの合計点----\n\n");
for (i = 0; i < 6; i++) {
printf("----生徒%d----\n", i + 1);
printf("合計点:%d\n",sum_stu[i]);
printf("平均点:%.1f\n\n", ((double)sum_stu[i])/SUBJECT);
}
}
実行結果
----1人目の点数----
国語:100
数学:98
----2人目の点数----
国語:78
数学:96
----3人目の点数----
国語:36
数学:48
----4人目の点数----
国語:91
数学:82
----5人目の点数----
国語:100
数学:100
----6人目の点数----
国語:97
数学:89
----科目ごとの合計点と平均点は以下の通りです。----
国語の合計点:502
国語の平均点:83.7
数学の合計点:513
数学の平均点:85.5
----生徒ごとの合計点----
----生徒1----
合計点:198
平均点:99.0
----生徒2----
合計点:174
平均点:87.0
----生徒3----
合計点:84
平均点:42.0
----生徒4----
合計点:173
平均点:86.5
----生徒5----
合計点:200
平均点:100.0
----生徒6----
合計点:186
平均点:93.0
メモ
科目数は2つなので、科目の合計はsum_sub[2]の配列として用意する。
配列を内側のループ(科目数)であるjで動かせば、科目ごとに代入の対象となる配列が切り替わるので、これを合計すれば科目ごとの合計値が求まる。
生徒数は6人なので、生徒ごとの合計値を格納する配列はsum_stu[6]となる。
配列を外側のループ(生徒数)であるiで動かせば、生徒ごとに配列が切り替わるので、これを合計すれば、個人の合計値が求まる。
scanf_s("%4d",&tensu[i][j]);
sum_stu[i] += tensu[i][j]; //生徒一人の国語と数学の合計点
sum_sub[j] += tensu[i][j]; //科目ごとの合計点
※i:生徒の人数
※j:科目の数