プロが教えるわが家の防犯対策術!

C言語で3次元配列の課題をしています。
5人の学生の3科目(国数英)の点数を前期と後期の2回分について三次元配列に入力し、各学生の前期と後期の合計と前・後期の合計を求めるプログラムです。
配列に数値を格納するあたりまでは分かったものの、そこから先がよくわからなくなってしまいました。どなたか解説とともに、成績の出力の仕方を教えていただけないでしょうか。for文を使えばいいというのはわかりますが・・・。
以下に出来た部分までのソースを載せておきます。まだ未熟な上、変なミスがあるかもしれません。

#include <stdio.h>
main()
{
/*配列を宣言*/
int score[0][3][5],i,j,k;
int total,sum[2][5];
/*配列に成績を入力*/
for(i=0;i<2;i++){
for(j=0;j<3;j++){
for(k=0;k<5;k++){
printf("score[%d][%d][%d] = ",i,j,k);
scanf("%d", &score[i][j][k]);
}
}
}
/*合計を計算する*/
for(i=0;i<5;i++){
for(j=0;j<2;j++){
total=0;
for(k=0;k<3;k++){
total = total + score[i][j][k];
}
sum[i][k]=total;
}
sum[2][k]=sum[0][k]+sum[1][k];
}
/*出力する*/
/*??*/

}

※三次元配列のscoreの始めの[]は、0が前期成績、1が後期成績を格納する部分です。

A 回答 (1件)

全部見たわけではありませんが、気が付いた点を幾つか


1.
int score[0][3][5],i,j,k;

int score[2][3][5],i,j,k;
では?
2.合計を計算する部分で、score配列の要素が[2][3][5]しかないのに、
for(i=0;i<5;i++){
for(j=0;j<2;j++){
total=0;
for(k=0;k<3;k++){
total = total + score[i][j][k];
となっている。
このままだと、iが4までループするため、score[4][1][2]をアクセスしてしまう。sum配列も同様に変な場所をアクセスしてしまいます。

この回答への補足

皆様、私の拙い質問を見てくださいましてありがとうございました。
自力で解決できるメドがついたので回答を締め切らせていただきます。

補足日時:2010/02/03 23:15
    • good
    • 0
この回答へのお礼

すみません。いきなり初歩的なミスをしていました。ご指摘ありがとうございます。

お礼日時:2010/02/03 21:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!