#4
by box » 1年前
ちょっとした手直し。
ポイント:
main()は全体の司令塔に徹し、「データを入力しろ」「計算しろ」「出力しろ」という
指示を出すのみ。
必要な処理は呼ばれた側で行なう。
科目数や人数が変わった場合にも、コンパイルし直せば対応できる。
コード:
#include <stdio.h>
#define NINZUU (3)
#define KAMOKU (2)
void inputData(int (*score)[NINZUU])
{
char *kamoku[KAMOKU] = { "英語", "数学" };
int i, j;
for (i = 0; i < KAMOKU; i++) {
printf("%d人の%sの点数を入力\n", NINZUU, kamoku[i]);
for (j = 0; j < NINZUU; j++) {
scanf("%d", &score[i][j]);
}
}
}
void calcData(int (*score)[NINZUU], int total[NINZUU], int *alltotal)
{
int i, j;
for (i = 0; i < NINZUU; i++) {
for (j = 0; j < KAMOKU; j++) {
total[i] += score[j][i];
*alltotal += score[j][i];
}
}
}
void printData(int (*score)[NINZUU], int total[NINZUU], int alltotal)
{
int i, j;
printf("合計点を出力します\n");
for (i = 0; i < NINZUU; i++) {
printf("%d番目の人の合計点数は%d\n", i + 1, total[i]);
}
printf("%d人の合計点数は%d\n", NINZUU, alltotal);
}
int main(void)
{
int score[KAMOKU][NINZUU], total[NINZUU] = { 0 }, alltotal = 0;
inputData(score);
calcData(score, total, &alltotal);
printData(score, total, alltotal);
return 0;
}
ちょっとした手直し。
ポイント:
main()は全体の司令塔に徹し、「データを入力しろ」「計算しろ」「出力しろ」という
指示を出すのみ。
必要な処理は呼ばれた側で行なう。
科目数や人数が変わった場合にも、コンパイルし直せば対応できる。
[code]
#include <stdio.h>
#define NINZUU (3)
#define KAMOKU (2)
void inputData(int (*score)[NINZUU])
{
char *kamoku[KAMOKU] = { "英語", "数学" };
int i, j;
for (i = 0; i < KAMOKU; i++) {
printf("%d人の%sの点数を入力\n", NINZUU, kamoku[i]);
for (j = 0; j < NINZUU; j++) {
scanf("%d", &score[i][j]);
}
}
}
void calcData(int (*score)[NINZUU], int total[NINZUU], int *alltotal)
{
int i, j;
for (i = 0; i < NINZUU; i++) {
for (j = 0; j < KAMOKU; j++) {
total[i] += score[j][i];
*alltotal += score[j][i];
}
}
}
void printData(int (*score)[NINZUU], int total[NINZUU], int alltotal)
{
int i, j;
printf("合計点を出力します\n");
for (i = 0; i < NINZUU; i++) {
printf("%d番目の人の合計点数は%d\n", i + 1, total[i]);
}
printf("%d人の合計点数は%d\n", NINZUU, alltotal);
}
int main(void)
{
int score[KAMOKU][NINZUU], total[NINZUU] = { 0 }, alltotal = 0;
inputData(score);
calcData(score, total, &alltotal);
printData(score, total, alltotal);
return 0;
}
[/code]