• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[緊急]bcc developerについての質問です。)

[緊急]bcc developerについての質問です。

このQ&Aのポイント
  • 学生数と平均点が0になってしまう問題について、修正方法を教えてください。
  • bcc developerに関する緊急な質問です。学生数と平均点が0になってしまう問題が発生しています。
  • 質問:[緊急]bcc developerについての問題が発生しています。学生数と平均点が0になってしまう原因と対処方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

> while(scanf("%d",&data[a])!=EOF) > scanf("%d",&point[b]); scanf系の変換指定子と、変数の型はちゃんと合せてください。 %dだと、実際に対応する引数がint型へのポインタでなくても、int型のポインタだと解釈して、int型の内部形式でメモリに書き込まれます。 なにがどの型かは、マニュアルを良く読んでください。 >printf("学生数=%d\n平均点=%f\n",x,w); の 書式も同様。 でも、結果が0になる本質は..... > w=data[b]/point[a]; aとbの値を追っていきましょう printf("学籍番号="); while(scanf("%d",&data[a])!=EOF) /*ループ1回目 a=1,b=1 : 入力→ data[a]=data[1] */ {a=a+1; /* a=2,b=1 */ printf("得点="); scanf("%d",&point[b]); /* a=1,b=1 : 入力→ point[a]=point[1] */ b=b+1; /* a=2,b=2 */ printf("学籍番号=");} x=point[a]; /* a=2→ x=point[2] ..,point[2]にはまだ入力されていない */ w=data[b]/point[a]; /* a=2,b=2 → w=data[2]/point[2] ... data[2],point[2]にはまだ入力されていない */ printf("学生数=%d\n平均点=%f\n",x,w); /* ループ2回目へ */ } なにがおかしいか、わかりましたか? 他には ・point[]の宣言が見当りませんが? ・配列の添字を1から始めているのは、なんかの意図があってのこと? ・エラーチェックは無しでいいのね? : scanf("%d",&point[b]);が成功したか、 w=data[b]/point[a];が0での割り算にならない保証、data[],point[]の添字の限界を越えない保証等。

その他の回答 (3)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.4

よくよく見れば、printfのメッセージ通りの入力なら 学生数=[得点] 平均点=[学籍番号]÷[得点] になってる。これでは、#3の分直しても、計算方法自体に問題があるからだめだわ。 平均の求めかたも、もう一度よく確認してください。それこそ、数学の教科書でも引っ張り出して。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

そのソースでは、pointという変数を定義していないため、 コンパイルできません。 「学生数と平均点が0になってしまう」ということは、 少なくとも実行はできているはずですが、 「コンパイルできない」という現象と矛盾しています。 まずは落ち着いて、コンパイルができているソースを載せてください。

noname#115588
noname#115588
回答No.1

突っ込みどころが多すぎて携帯からだと答えづらいですが、、、 まず、x をやめて e に変更。次に「a = 1;」の上にでも w = 0; を追記。さらに「b=b+1;」の上に w = w + point[b]; を追記。最後に「x=…」「w=…」を e = a - 1; w = w / e; に変更。 これでどうだろう?

関連するQ&A

専門家に質問してみよう