アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語の勉強をしているものですが以下の問題のエラーが取れなくて困っております。

問題文で構造体のポインタを用いるとの指定がありましたので、それに従っているつもりですが、
*をとる?という読めるエラーが出てしまいます。
また、その他のエラーに関してもどう対応してよいのか困っております。
どなたかお時間がありましたら、アドバイス頂けると幸いです。

【問題分】
以下の表は、あるクラスのテストの成績を示す票である。この生徒情報を構造体として作成し、それぞれの科目の平均点を構造体のポインタを用いて求めなさい。
学生番号  国語  算数  理科  社会  英語
1001 82 43 53 84 45
1002 92 83 88 79 99
1003 43 32 53 45 66
1004 72 73 71 68 59
1005 99 72 82 91 94

この時、以下の構造体を作成し、利用すること。

【student_data:学生の番号と、点数のデータを保存する構造体 】
typdef struct{
int id; // 学生番号
int kokugo; // 国語の点数
int sansu; // 算数の点数
int rika; // 理科の点数
int shakai; // 社会の点数
int eigo; // 英語の点数
}student_data;

【期待される実行結果】
国語 平均 = 77.60
数学 平均 = 60.60
理科 平均 = 69.40
社会 平均 = 73.40
英語 平均 = 72.80




【私が作成してビルドした結果】
*** Build of configuration Debug for project probex6-4 ****

**** Internal Builder is used for build ****
gcc -O0 -g3 -Wall -c -fmessage-length=0 -o main.o ..\main.c
..\main.c:19: error: syntax error before '*' token
..\main.c:68: error: syntax error before '*' token
..\main.c: In function `Avarage':
..\main.c:75: error: `data' undeclared (first use in this function)
..\main.c:75: error: (Each undeclared identifier is reported only once
..\main.c:75: error: for each function it appears in.)
..\main.c:77: error: `ave' undeclared (first use in this function)
Build error occurred, build is stopped
Time consumed: 203 ms.


【私が作成したソース】
#include <stdio.h>

typedef struct{
int id;
int kokugo;
int sansu;
int rika;
int shakai;
int eigo;
}student_data;

void Avarage(student_data *data,*ave);

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

data[0].id = 1001;
data[1].id = 1002;
data[2].id = 1003;
data[3].id = 1004;
data[4].id = 1005;

data[0].kokugo = 82;
data[1].kokugo = 92;
data[2].kokugo = 43;
data[3].kokugo = 72;
data[4].kokugo = 99;

data[0].sansu = 43;
data[1].sansu = 83;
data[2].sansu = 32;
data[3].sansu = 73;
data[4].sansu = 72;

data[0].rika = 53;
data[1].rika = 88;
data[2].rika = 53;
data[3].rika = 71;
data[4].rika = 82;

data[0].shakai = 84;
data[1].shakai = 79;
data[2].shakai = 45;
data[3].shakai = 68;
data[4].shakai = 91;

data[0].eigo = 45;
data[1].eigo = 99;
data[2].eigo = 66;
data[3].eigo = 59;
data[4].eigo = 94;

Avarage(data,ave);

printf("国語 平均 = %4.2f\n 数学 平均 = %4.2f\n 理科 平均 = %4.2f\n 社会 平均 = %4.2f\n 英語 平均 = %4.2f\n", ave[0],ave[1],ave[2],ave[3],ave[4]);

return 0;
}

void Avarage(student_data *data,*ave){

int i;

int sum = 0;

for(i=0;i<5;i++){
sum = sum + data[i]->kokugo;
}
ave[0] = sum / 5;
sum = 0;

for(i=0;i<5;i++){
sum = sum + data[i]->sansu;
}
ave[1] = sum / 5;
sum = 0;

for(i=0;i<5;i++){
sum = sum + data[i]->rika;
}
ave[2] = sum / 5;
sum = 0;

for(i=0;i<5;i++){
sum = sum + data[i]->shakai;
}
ave[3] = sum / 5;
sum = 0;

for(i=0;i<5;i++){
sum = sum + data[i]->eigo;
}
ave[4] = sum / 5;

}

A 回答 (1件)

> 【私が作成したソース】


の12行下、
> void Avarage(student_data *data,*ave);

第2引数の*aveの型が指定されていません。
関数の本体の方も同様です。
    • good
    • 1
この回答へのお礼

なるほどですね。
ありがとうございます。

何度も申し訳ないのですが、
形を宣言しビルドすると、以下のようなエラーでてきました。
もし可能であればアドバイス頂けたら幸いです。

**** Build of configuration Debug for project probex6-4 ****

**** Internal Builder is used for build ****
gcc -O0 -g3 -Wall -c -fmessage-length=0 -o main.o ..\main.c
..\main.c: In function `Avarage':
..\main.c:75: error: invalid type argument of `->'
..\main.c:81: error: invalid type argument of `->'
..\main.c:87: error: invalid type argument of `->'
..\main.c:93: error: invalid type argument of `->'
..\main.c:99: error: invalid type argument of `->'
Build error occurred, build is stopped
Time consumed: 218 ms.

お礼日時:2017/12/29 21:45

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