構造体とポインタ
プログラミング演習の質問です
「stdata.hを読み込んで英語,数学,物理の平均値と分散を求めるプログラムを作成せよ。コンパイルに必要なヘッダーファイル(.hファイル)と
プログラムファイル(.cファイル)を全て提出してください。
stdata.hはプログラム中で以下のようにインクルードすることで
データを読み込んでください。
include "stdata.h"」
おそらくポインタが間違っていると思いますが、どこがだめで、どのように直せばいいのかわかりません。
stdata.hは
c++
1#define NUM 100 2student st[NUM] = { 3 {"0001", "ayase kurumi", 85, 84, 71} 4,{"0002", "iijima mitsuru", 90, 70, 83} 5,{"0003", "ishizaka yutaka", 55, 81, 88} 6..... 7,{"0100", "yoshinaga yuu", 78, 77, 65} 8};
発生している問題・エラーメッセージ
horyu1.c:23:17: error: expected identifier or ‘(’ before ‘[’ token
struct test_data[]=(student *p,char *id, char *name,
^
horyu1.c: In function ‘main’:
horyu1.c:46:11: error: invalid operands to binary + (have ‘int’ and ‘student’ {aka ‘struct <anonymous>’})
total += st[i];
^~ ~~~~~
horyu1.c:51:20: error: invalid operands to binary - (have ‘student’ {aka ‘struct <anonymous>’} and ‘float’)
var += ((st[i] - avg) * (st[i] - avg)) / (float)NUM;
~~~~~ ^
horyu1.c:51:36: error: invalid operands to binary - (have ‘student’ {aka ‘struct <anonymous>’} and ‘float’)
var += ((st[i] - avg) * (st[i] - avg)) / (float)NUM;
該当のソースコード
c++
1#include <stdio.h> 2#define N 100 3 4 typedef struct{ 5 char id [8]; 6 char name [64]; 7 int eng; 8 int math; 9 int phys; 10 double avg; 11 double var; 12} student; 13 14#include "stdata.h" 15 16 17struct test_data[]=(student *p,char *id, char *name, 18 int eng, int math, int phys) 19 20 { 21 strcpy(p->id,id); 22 strcpy(p->name,name); 23 p->eng = eng; 24 p->math = math; 25 p->phys = phys; 26} 27 28 29 int main() 30 { 31 ; 32 int i; 33 int total; 34 float avg; 35 float var; 36 total = 0; 37 avg = 0.0; 38 var = 0.0; 39 for(i = 0; i < NUM; i++){ 40 total += st[i]; 41 avg = total/(float)NUM; 42 printf("Average: %.2f\n",avg); 43 } 44 for(i = 0; i < NUM; i++){ 45 var += ((st[i] - avg) * (st[i] - avg)) / (float)NUM; 46 printf("Variance: %.2f\n",var); 47 } 48 49 printf("----------------------------\n"); 50 51 printf(" English Average:%.2f\n",st[i].eng); 52 printf(" Math Average:%.2f\n",st[i].math); 53 printf(" Physics Average:%.2f\n",st[i].phys); 54 printf(" English Variance:%.2f\n",st[i].eng); 55 printf(" Math Variance:%.2f\n",st[i].math); 56 printf(" Physics Variance:%.2f\n",st[i].phys); 57 58 return 0; 59}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。