ページ 11

配列の合計と各平均

Posted: 2015年10月29日(木) 22:54
by あんな

コード:

#include<stdio.h>
#define gakunen 3
#define kamoku 5
int main(void)
{
	int a[gakunen][kamoku] = { { 10, 20, 30, 40, 50 }, { 11, 22, 33, 44, 55 }, { 15, 25, 35, 45, 55 } };

	int i, j;
	int sum, ave;

	for (i = 0; i < gakunen; i++){
		for(j = 0; j < kamoku;j++){
			sum = 0;
			sum += a[i][j];
			printf("合計は%d\n", sum);
		}
		for (i = 0; i < gakunen; i++){
			for (j = 0; j < 6; j++){
				ave = a[i][j] / 5;
				printf("国語の平均は%d\n", ave);

			}
		}
	}
	return 0;
}
3行5列で表された学年と各教科(国語、算数、理科、社会)の点数の全校生徒の点数の合計と各学年の合計の平均を求める問題で、
自分の中でやってみたのですが、全く思い通りに出力してくれませんでした。
解決策と回答かヒントをください。
よろしくお願いします。

Re: 配列の合計と各平均

Posted: 2015年10月30日(金) 00:03
by box
5科目だと言ってるのに国語、算数、理科、社会の4科目しかなかったので、
勝手に英語を追加しました。

コード:

#include <stdio.h>

#define GAKUNEN (3)
#define KAMOKU  (5)

int getZentaiGoukei(int (*tensuu)[KAMOKU])
{
    int goukei, i, j;

    for (goukei = i = 0; i < GAKUNEN; i++) {
        for (j = 0; j < KAMOKU; j++) {
            goukei += tensuu[i][j];
        }
    }
    return goukei;
}

double getKamokuHeikin(int (*tensuu)[KAMOKU], int kamoku)
{
    int goukei, i;

    for (goukei = i = 0; i < GAKUNEN; i++) {
        goukei += tensuu[i][kamoku];
    }
    return (double) goukei / GAKUNEN;
}

int main(void)
{
    int tensuu[GAKUNEN][KAMOKU] = {
        { 10, 20, 30, 40, 50 },
        { 11, 22, 33, 44, 55 },
        { 15, 25, 35, 45, 55 },
    };
    int i;
    char *kamoku[KAMOKU] = {
        "国語", "数学", "理科", "社会", "英語",
    };

    printf("全体の合計は%d点\n", getZentaiGoukei(tensuu));
    for (i = 0; i < KAMOKU; i++) {
        printf("%sの平均は%f点\n", kamoku[i], getKamokuHeikin(tensuu, i));
    }
    return 0;
}