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

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>

typedef struct
{
char FamilyName[32];
char FirstName[32];
int Score[5];
}Student;

int main(void)
{
int sum[5];
double ave[5];

int i=0, m=0;

Student data[2] = {
{ "nobi", "nobita", { 25, 10, 40, 0, 15 } },
{ "minamoto", "shizuka", { 75, 60, 85, 90, 70 } },

};

for( i = 0; i < 5; i++ )
{
sum[i] = data[0].Score[i] + data[1].Score[i];
}
ave[0] = sum[0]/2;
ave[1] = sum[1]/2;
ave[2] = sum[2]/2;
ave[3] = sum[3]/2;
ave[4] = sum[4]/2;

printf("平均点: %2.2f %2.2f %2.2f %2.2f %2.2f\n",ave[0], ave[1], ave[2], ave[3], ave[4]);
}

上記は2人の生徒の平均点を求めるプログラムです。
もし2人でなくもっと多くの人数がいる場合は、
for( i = 0; i < 5; i++ )
{
sum[i] = data[0].Score[i] + data[1].Score[i];
}
の部分をdata[m]としてどうすればよいのでしょうか?
下記で試したところ変な数ができてしまいます、、
for( i = 0; i < 5; i++ )
{
for( m = 0; m < 50; m++ ) //50人設定
{
sum[i] += data[m].Score[i];
}
}

A 回答 (4件)

平均をだすとき50で割ってる?

    • good
    • 0
この回答へのお礼

割ってます、、、

お礼日時:2021/03/05 19:51

data構造体の宣言時は配列50とってるか?


データの初期値設定時、カンマや中カッコの抜けがないか等は大丈夫ですか?
    • good
    • 0
この回答へのお礼

とってます、、
for( i = 0; i < 5; i++ )
{
for( m = 0; m < 2; m++ )
{
sum[i] += data[m].Score[i];
}
}
これを代わりに2人の場合のプログラムに入れるとやはり変な数が出てきます。↓
平均点: -1020503177.00 34.00 3211202.00 993703875.00 2100578.00

お礼日時:2021/03/05 20:17

sum[i] += data[m].Score[i];


にするんだったら、
int sum[5]={0};
と初期値を全部 0 にしておかないとゴミデータが入りますよ。
    • good
    • 0
この回答へのお礼

ありがとうございます!
={0}を追加したらできました。

int sum[5]=0;でエラーになってうなっていました、、{}をつけるのですね。

お礼日時:2021/03/05 20:23

for( i = 0; i < 5; i++ )


{
sum[i] = 0;
for( m = 0; m < 50; m++ ) //50人設定
{
sum[i] += data[m].Score[i];
}
}
でもいい。
    • good
    • 0

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