配列の合計と各平均

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
あんな

配列の合計と各平均

#1

投稿記事 by あんな » 9年前

コード:

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

box
記事: 2002
登録日時: 14年前

Re: 配列の合計と各平均

#2

投稿記事 by box » 9年前

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;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

閉鎖

“C言語何でも質問掲示板” へ戻る