• 締切済み

C言語を始めたばかりですが、なかなか難しいです。

C言語を始めたばかりですが、なかなか難しいです。 下記のプログラムですが、誤りを指摘して頂けないでしょうか? /************************************************************************ 合計と平均を求める ************************************************************************/ #include <stdio.h> #define KAMOKU 3 main() { int ten[KAMOKU]={73,59,92}; /*得点*/ int goukei=0; /*合計点*/ double heikin; /*平均点*/ char shimei[20]="太郎"; /*氏名*/ char kamokuName[KAMOKU][10]={"国語","数学","英語"}; int i; /*科目数*/ /*合計点と平均点の算出*/ for(i = 0; < KAMOKU;i++) { goukei+=ten[i]; } heikin=(double)goukei / i; /*画面に表示*/ printf("氏名:%s\n",shimei); for(i = 0; < KAMOKU;i++) { printf("%-6s:%3d点\n",kamokuName[i],ten[i]); } printf("\n"); printf("%sさんの合計:%3d点 平均:%5.1f点\n",shimei,goukei,heikin); エラーメッセージは for.c: In function ‘main’: for.c:18: error: expected expression before ‘<’ token for.c:27: error: expected expression before ‘<’ token です。 どうぞ宜しくお願い致します。

みんなの回答

  • gtx456gtx
  • ベストアンサー率18% (194/1035)
回答No.3

下記のURLを参照して・・・間違い探しましょう m(_ _)m http://www9.plala.or.jp/sgwr-t/c/sec06-2.html

offikou
質問者

お礼

ご回答ありがとうございます。 たくさんの方からアドバイスを頂き、誤りは分かりました。 まだ全く理解していないので、もう少し自学して投稿致します。

  • gtx456gtx
  • ベストアンサー率18% (194/1035)
回答No.2

宿題ですか??? >for.c: In function ‘main’: >for.c:18: error: expected expression before ‘<’ token >for.c:27: error: expected expression before ‘<’ token せっかくコンパイラーが「main」の18行と27行で間違っているよ! っと言っているので・・・その2行を真面目にじっくりと考えると単純な構文ミスに気づくと思うのですがわかりませんか? forの構文と18&27行を比べてみましょう! 少なくとも、多くの人が見る場所で「コンパイラーに指摘されていることを質問するのは、初心者」という言い訳でも感心できないです。

offikou
質問者

お礼

とにかく私には難しいですね。 まぁ頑張ります。 ありがとうございます。

offikou
質問者

補足

目を皿の様にして18行・27行を見ました。 どこが誤っていますか? どうぞ教えてください。 宜しくお願い致します。

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

> for(i = 0; < KAMOKU;i++) 両方とも同じエラーでしょ。エラーメッセージをよく見ましょう。 「何」とKAMOKUを比較しているのか?

offikou
質問者

お礼

ご指摘有難うございます。 もう一度考えてみます。

関連するQ&A

  • データの損失について

    はじめまして今回が初めての投稿になります、よろしくお願い致します。実はCの復習をかねて以下のようなプログラムを作ったのですが、なぜかjirouとsaburouの英語の点数が0と表示されてしまいます。tarouとshirouはきちんと表示されるのですが・・・ソフトはVisual C++6.0を使っていてコンパイルの際に「'const double ' から 'int ' に変換しました。データが失われているかもしれません。」と出ているのですがいまいち良くわかりません。もしよろしければご教授お願い致します。 #include<stdio.h> #define KAMOKU 3 main() { /*変数の宣言*/ int ten[4][3] = { {73,59,92}, {52,95.70}, {22.19,31}, {100,99,96} }; int goukei[4],i; double heikin[4]; char lank[4] = {'B','B','C','A'}; char shimei[4][10] = {"tarou","jirou","saburou","shirou"}; /*合計と平均の計算*/ for(i = 0;i < 4;i++){ goukei[i] = ten[i][0]+ten[i][1]+ten[i][2]; heikin[i] = (double)goukei[i]/KAMOKU; } /*表示*/ printf("氏名   国語 数学 英語 合計  平均 評価\n"); for(i = 0;i<4;i++){ printf("%-10s %5d %5d %5d %5d %7.1f %c\n",shimei[i],ten[i][0],ten[i][1],ten[i][2], goukei[i],heikin[i],lank[i]); } }

  • C言語についての質問です。

    C言語で順位表をつくる課題で困っています。 課題でプログラミングをしているのですが、順位表がうまく作成されません。 改善点をご教授ください。 課題は、http://www.centerjoho.com/23_q.pdf の第三問をC言語化するというものです。 よろしくお願いいたします。 以下、プログラムです。 #include <stdio.h> int main(void) { int Tensu[11]={ -1,15,9,26,13,2,28,17,21,12,10} ; int s, bango, sowa, saiko, saitei, heikin, TNin[101]={0} ; int GNin[101], ten, Tenjun[11], Tenban[11] ; int juni, i ; sowa = 0 ; saiko = 0 ; saitei = 100 ; for (bango=1;bango<=10;bango=bango+1) { s = Tensu[bango] ; sowa =sowa+s; if ( s >saiko ) saiko = s ; if ( s <saitei) saitei = s ; TNin[ s ] = TNin[ s ] + 1 ; } heikin = sowa / 10 ; printf("平均点=%d 最高点=%d 最低点=%d\n", heikin, saiko, saitei); GNin[100] = TNin[100] ; for (ten=99;ten>=0;ten=ten-1) GNin[ ten ] = GNin[ ten+ 1 ] + TNin[ ten ] ; for (bango=10;ten>=1;bango=bango-1) { s = Tensu[ bango ]; Tenjun[ GNin[s] ] = s ; Tenban[ GNin[s] ] = bango ; GNin[ s ] = GNin[ s ] - 1 ; } printf("#################\n") ; printf(" 順位 点数 番号\n") ; printf("#################\n") ; juni = 1 ; printf("%4d %4d %4d\n", juni, Tenjun[1], Tenban[1]); for (i=2;i<=10;i=i+1) { if (Tenjun[i] < Tenjun[i-1] ) juni = i ; printf("%4d %4d %4d\n", juni, Tenjun[i], Tenban[i]); } return 0 ; }

  • C++の配列についてなんですが

    #include <iostream> using namespace std; int main() { int i,goukei=0; int kokugo[5]; float heikin; for(i=0;i<5;i++) { cout << "出席番号" << i+1 << "番の国語の成績を入力してください\n"; cin >> kokugo[i]; goukei = goukei + kokugo[i]; } heikin = (float)goukei/5.0; cout << "平均点は" << heikin << "点です\n"; for(i=0;i<5;i++) { cout << "出席番号" << i+1 << "番の国語の成績は" << kokugo[i]; cout << "点で、平均との差は" << heikin-(float)kokugo[i] << "です\n"; } return 0; } これを基に 数学の点数も入力する 数学の平均も出力する 国語と数学の総合的な平均点も出力する ようにするにはどうすればいいんですか?

  • C++で10進数→2進数に

    C++で10進数を2進数に変換するプログラムを 順番通りに表示できるようにする っていうのを配列を使って作るんですが 下はあまり関係ないですが、こんな感じのが参考になるかなと思ったんですが、どうすればいいんですか #include <iostream> using namespace std; int main() { int i,goukei=0; int kokugo[5]; float heikin; for(i=0;i<5;i++) { cout << "出席番号" << i+1 << "番の国語の成績を入力してください\n"; cin >> kokugo[i]; goukei = goukei + kokugo[i]; } heikin = (float)goukei/5.0; cout << "平均点は" << heikin << "点です\n"; for(i=0;i<5;i++) { cout << "出席番号" << i+1 << "番の国語の成績は" << kokugo[i]; cout << "点で、平均との差は" << heikin-(float)kokugo[i] << "です\n"; } return 0; }

  • どこが間違っているのか教えてください。。

    C言語の勉強をしています。 プログラムを作成してみましたが、うまくいきません。 どこが間違っているのか、なぜそうなるのか、教えていただけると助かります。 よろしくお願いします。 あるクラスの試験の点数を整数で繰り返し入力し、点数の合計と平均点を出力するプログラムを作成しなさい。 点数は、0点以上100点以下とし、この範囲外の点(0点未満または100点より大きい点)が入力されたときは、入力を終了し、点数の合計と平均点を出力する(最後に入力された範囲外の点は集計の対象としない)。 また、平均は小数点以下2桁まで出力する。 繰り返しの命令は、何を使ってもよい。 ▼実行例 点数:10 点数:100 点数:20 点数:35 点数:120 合計:165点 平均: 41.25点 ******************************************* 考えたプログラム #include<stdio.h> int main(void) { int   ten,hito,goukei; double           heikin; goukei=0; hito=0; while(1){ printf("¥n点数:"); scanf ("%d", &ten); if(ten<0||100<ten) break; goukei=goukei+ten; hito=hito+1; break; } printf("¥n合計:%d点",goukei); heikin=(double)goukei/(double)hito; printf("¥n平均:%.2lf点",heikin); }

  • 高校1年生のプログラング問題で分からない点があります><先週からCについて学びはじめました

    こんばんは。最近C言語について学びはじめた高校生です。 ある程度学校の授業で学習するのですが、明日から実際にプログラミングを始めるみたいです。 予習しようと思い、visualC++をインストールして練習しております。 そこで、いくつか思い通りにいかない問題がありましたのでご回答、アドバイスなどいただけると嬉しいです。 内容はC言語の基礎中の基礎だと思います>< 「1」 5個の整数データを配列に代入にそれらの合計と平均を求めるプログラムをつくれ。 「2」 問「1」のデータの最大値を求めるプログラムをつくれ。 「3」 問「1」の5つのデータを大きい順に並べ変えろ。 というみっつの問題です。 C言語は先週から学びはじめたばかりなのでまだまだ知識不足ですが、 下記に一番を自分なりに作ってみました。 #include <stdio.h> int main (void) { int box[5]={0,0,0,0,0}; int goukei,i; float heikin; goukei=0; for(i=1;i<=5;i++){ scanf("%d",&i); goukei=goukei+i; } heikin=(float)heikin/5.0; printf("合計は%d",goukei); printf("平均は%f",heikin); return0; } やはり思い通りの結果が出ず困っております。 正答とアドバイスいただけると嬉しいです。 よろしくおねがいします。

  • 学校の課題で悩んでます

    #include <stdio.h> void main(){ float syushi[7],goukei,heikin; int i; goukei = 0; for( i=1; i<=7; i++ ){ printf("%dの収支は?\n",i); scanf("%f",&syushi[i-1]); goukei =goukei+syushi[i-1]; } heikin = goukei / 7.0; printf("7日分の平均収支: %f円\n",heikin); } 1週間分の合計収支が 20万円より大きかったら(ぼろ勝ち) 20万円以下で0円より大きいかったら(まあいいか) 0円なラ(意味ないな) マイナスなら(焼肉を食おう)

  • C言語のポインタ配列について

    ポインタ配列を使って、各組(横一列が1組)の最高点と平均点、学年平均を表示するプログラムを考え中です。 各組の最高点を求める部分をどのように書けばいいのか迷ってます。 下記のプログラムでマズイ部分などありましたら教えていだたきたいです。 #include <stdio.h> int main(void) {   int ten1[] = { 52, 38, 79, 89, 57, 71, 90, -999};   int ten2[] = { 67, 89, 56, 45, 91, -999};   int ten3[] = { 89, 34, 67, 65, 67, 55, -999};   int* p[3];   int k;   int i;   int sum;   int total;   float ave;   int nin = 18;      p[0] = ten1;   p[1] = ten2;   p[2] = ten3;      total = 0;   for (k = 0; k < 3; k++)   {     i = 0;     sum = 0;     while (p[k][i] != -1)     {       sum += p[k][i];       i++;     }     ave = ave = (float)total / 3;     total += sum;     printf("平均点%3.1f\n", ave);   }   ave = (float)total / nin;   printf("学年平均点:%3.1f\n",ave);      return 0; }

  • C++でfscanf関数・fprintf関数を利用した成績処理のプログ

    C++でfscanf関数・fprintf関数を利用した成績処理のプログラムを作成しています。 #include "stdafx.h" void input(void); void calc(void); void edit(void); int gakusei=10,kamoku=5; /*学生数、科目数*/ char kamokumei[5][40]; /*科目名*/ char shimei[10][40]; /*氏名*/ int tennsuu[10][5]; /*点数*/ float heikin[10]; /*平均点*/ void main() /*メイン関数*/ { input(); calc (); edit (); } void input(void) /*データ入力(infile.d.txtから読み込む)*/ { FILE *fp; int n,k; fp=fopen("infile.d.txt","r"); if(fp==NULL) { printf("infile.d.txtが開けません\n"); } printf("infile.d.txt\n\n"); fscanf(fp,"%d %d",&gakusei,&kamoku); printf("%d %d\n",gakusei,kamoku); fscanf(fp,"%s",kamokumei); printf("%s\n",kamokumei); fscanf(fp,"%s",shimei); printf("%s\n",shimei); while(fscanf(fp,"%s",tennsuu)!=EOF) { printf("%s\n",tennsuu); } printf("\n\n"); fclose(fp); } void calc(void) /*各学生の平均点を計算、平均点の優秀者(80点以上)及び不合格者(60点未満)を摘出*/ { int n,k; float sum; for(n=0; n<gakusei; n++) { sum=0; for(k=0; k<kamoku; k++) { sum+=(float)tennsuu[n][k]; } heikin[n]=sum/kamoku; } } void edit(void) /*平均点、優秀者及び不合格者の氏名を付加した成績表を出力(outfile.d.txtに書き込み)*/ { int n; FILE *seiseki; seiseki=fopen("outfile.d.txt","w"); printf("outfile.d.txt\n\n"); fprintf(seiseki,"氏名 %s 平均\n",kamokumei); printf("氏名 %s 平均\n",kamokumei); fprintf(seiseki,"%s\n",shimei); printf("%s\n",shimei); for(n=0; n<gakusei; n++) { fprintf(seiseki,"%s",tennsuu); printf("%s\n",tennsuu); } printf("\n"); fprintf(seiseki,"平均点優秀者\n"); printf("平均点優秀者\n"); fprintf(seiseki,"平均点不合格者"); printf("平均点不合格者\n"); fclose(seiseki); } 添付した画像のoutfile.d.txtのようなフォーマットで出力したいのですが、氏名がうまく出力できません。また、点数もinfile.d.txtの最後の行しか読み込んでくれません。 どのように書き換えればよいのでしょうか? よろしくお願いします。 *infile.d.txtについて 10 5 ⇒学生数と科目数 材料力学 熱力学 ・・・ ⇒科目名 石川 川上 佐藤 ・・・ ⇒学生の氏名 78 95 75 86 ・・・ ⇒各科目の点数(1行につき5科目×2人分の点数が書き込まれています。)

  • C言語 構造体でつまずいています

    以下、番号と点数を入力して構造体配列に入力し、番号に0が入力されたら、入力処理をやめ、平均点を表示するプログラムです。  今のコードでは、最初から番号に0を入力すると、0除算になりエラーになります。どうすれば良いのでしょうか? #include <stdio.h> #define MAX 50 //配列の要素数を定義 int count=0; //グローバル変数 struct data { //構造体の定義 int num; //メンバの宣言 int ten; }; void nyuryoku(struct data *); //プロトタイプ宣言 float heikin(struct data *); //プロトタイプ宣言 void main() { struct data score[MAX]; //構造体の宣言 printf("**学生番号/点数入力**\n"); printf("\n"); nyuryoku(score); //nyuryoku関数呼び出し printf("\n**以上%d名の平均点:%0.1f点**\n",count,heikin(score)); //heikin関数の戻り値表示 } //nyuryoku関数 //機能:構造体配列にデータを入力する void nyuryoku(struct data *pd) //仮引数pdに構造体ポインタが渡る { int i; for(i=0;i<MAX;i++){ printf("学生番号>>"); scanf("%d",&pd->num); if(pd->num==0){ //学生番号に0を入力するとループを抜ける break; } printf("点  数>>"); scanf("%d",&pd->ten); count++; //人数のカウント pd++; //構造体配列を一つずらす } } //heikin関数 //機能:構造体配列の点数の平均を計算、戻り値として返す float heikin(struct data *pd) //仮引数pdに構造体ポインタが渡る { int i; int sum=0; float ave=0; for(i=0;i<MAX;i++){ if(pd->num==0){ break; } else{ sum+=pd->ten; //点数を加算 pd++; } } ave=(float)sum/count; //平均値を求める return(ave); //平均値を戻り値として返す }

専門家に質問してみよう