- 締切済み
困ってます。
c言語で成績のプログラムを作ってみたんですが エラーが出て実行出来ません。 どなたかご指摘お願いします。 #include<stdio.h> #define N 5 struct MEMBER{ int no; char name[8+1]; int run; int jump; int power; int sum; double avg; }; if (data==NULL) return; void Calc_Sum(struct MEMBER *data) { data->sum=data->run+data->jump+data->power; return(0); } void Calc_Avg(struct MEMBER *data) { data->avg=data->sum/3.0; return(0); } void Display_Data(struct MEMBER data) { printf("---判定---\n"); printf("背番号:%5d\n",data.no); printf("名前:%5s\n",data.name); printf("走力 :%5d 点数\n",data.run); printf("跳躍力:%5d 点数\n", data.jump); printf("筋力 :%5d 点数\n", data.power); printf("総計 :%5d 点数\n", data.sum); printf("平均 :%5.1f 点数\n", data.avg); return(0); } int main(void) { int i; struct MEMBER member[N] ={{51,"イチロー",95,95,80,0,0}, {55,"松井秀喜",70,80,90,0,0}, {18,"松坂大輔",75,75,80,0,0}, {18,"黒田博樹",80,85,85,0,0}, {19,"上原浩治",85,85,85,0,0}, }; struct MEMBER *p=member; /*総計の算出*/ for(i=0;i<N;i++) Calc_Sum(p+i); /*平均の算出*/ for(i=0;i<N;i++) Calc_Avg(p+i); /*結果の出力:*/ for(i=0;i<N;i++) Display_Data(member[i]); return(0); }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kmee
- ベストアンサー率55% (1857/3366)
http://okwave.jp/qa/q6926280.html で指摘されていることが全然反映されていませんが。 間違った場所にifが追加して改悪されてるし。 > エラーが出て実行出来ません。 それなら、まずそのエラーメッセージを読むこと。これはどんな達人プログラマーだってやってることです。 達人でさえ読まなくては対処できないのに、素人のあなたがサボったら対処できるわけがないです。 どのファイルのどの行でエラーになったか、コンパイラによっては日本語で表示されるし、英語表示だとしても、最近なら翻訳サイトで翻訳したり、そのメッセージ自体を検索すればすぐにわかります。こんなところで回答待つより早いです。 プログラムの問題点は、概ね前の質問への回答にある通り。 私が気になるのは > char name[8+1]; 日本語一文字=char 2つ、日本語4文字分、としているようですが、使っている文字コードはそれであってますか? 例えば、UTF-8なら日本語一文字にchar3つ使います。
- Wr5
- ベストアンサー率53% (2173/4061)
エラーメッセージくらい掲示できるでしょう? >}; >if (data==NULL) return; >void Calc_Sum(struct MEMBER *data) このif文はなんでしょう? どこの関数にも入っていませんけど…。 そして、dataってなんでしょう? おそらくCalc_Sum()とCalc_Avg()の最初のコードなんでしょうけどね… こんなトコに書いてもコンパイラが気を利かせてくれることはないですよ。 >return(0); void型の関数が値を返却するのでしょうか?