9年前こんばんは、初めまして。得点を読みこんで、読み込んだ順に各人のデータを、さらに、各科目と総得点に関する平均と標準偏差を出力するCプログラムを作成せよ」という課題が出され、そのCプログラムを作成しました。プログラムは以下の通りです。長いプログラムで申し訳ありません。0;}このプログラムをコンパイルすると、「Total」、「Ave」、「Dev」が定義されていないというエラーが出てしまいます。7行目で定義しているつもりなのですが、これでは定義されたことにならないのでしょうか?Total、Ave、Devが定義されていないというエラーが出る理由や、どう直すべきかを教えて頂けると、非常に助かります。構造体変数を書かないと構造体内の変数は使えませんよ。さんが書きました:このプログラムをコンパイルすると、「Total」、「Ave」、「Dev」が定義されていないというエラーが出てしまいます。7行目で定義しているつもりなのですが、これでは定義されたことにならないのでしょうか?Total、Ave、Devが定義されていないというエラーが出る理由や、どう直すべきかを教えて頂けると、非常に助かります。totoさんが既に仰ってるように、それらの変数はmain内にあるべきです。num++;これもおかしいです。読み込む予定の物は7つなのに対して、フォーマット指示は二つしかされていません。100.0;これらのscanfはおそらく不要です。Aveの計算が間違っています。(student[k]と言う点を除いても・・・)全科目の平均か科目別の平均が解らないので全科目と仮定すると。平均は(合計/要素数)になります。300))になります。/=100.0;これも正常に動作しません。標準偏差は分散の平方根です。分散と言うのは、各々の要素と平均の差を二乗して全部足したものをさらにその要素数で割る値の事です。%3.3g\n");まず、最初のprintfですが、フォーマット指示が二つしかないのに出力しようとしているものは5つあります。(ちなみに合計は常に同じ値なので同じものがずらーっと表示されることになります。)また、最後のprintfはフォーマット指示で二つの物を出力しようとしてますが、第二引数以降が有りません。9年前プログラムの細かな点は他の方々が指摘されているので、別の問題点を指摘させていただきます。「100人以下の不特定の人数」と有りますが、提示されているプログラムでは100人固定で処理を実行するようになっています。生徒数は最大で100人なので、その成績を入れる構造体の数は100でかまいませんが、その全てに有効なデータが入るとは限らないと考える必要があります。考えるとデータの入力を無条件に100回繰り返すのではなく、入力の終了を判定することが必要になります。入力が終了したら、その後のデータ(構造体配列)にはデータが無効であることを示すようになっている必要があります。計算する際には有効なデータだけを使って計算するようにしておく必要があります。ヒント:入力に終了は学生番号の入力値を利用する。データの有効・無効の判定も学生番号を利用する。100のデータを入れるための配列サイズは101ではなく100でいいですよ。数学num++まぁこの部分です。9年前ちゃんとEOFをチェックしていますから標準入力にファイルをリダイレクトして使うならこのままでも良いのではないでしょうか。/=100.0;を見て100以下の処理をやっていないと短絡的に見てしまいました。今日は見落としばっかりで残念な私。対して正しくありません。対して正しくありません。対して正しくありません。」と出てしまいました。以下の部分がおかしいようですが、調べてみてもどう直すと良いのか分からないです。対して正しくありません。よろしければ、エラーがでないように直す方法を教えて頂けますでしょうか。標準偏差の方はまだ求める式が分からないので、後で調べて式を書き直します。対して正しくありません。よろしければ、エラーがでないように直す方法を教えて頂けますでしょうか。s;の時、構造体へのアクセスは次のようにします。平均値などの計算を直してはいかがですか?100で割るのではなくnumではないですか??それとまずは各学科の合計値、総合点の合計値をだすことをやる必要があります。さん、構造体へのアクセスについて教えてくださってありがとうございました。仰るとおりに修正してみたところ、エラーがでなくなりました。平均値などの計算を直してはいかがですか?100で割るのではなくnumではないですか??それとまずは各学科の合計値、総合点の合計値をだすことをやる必要があります。少なくともaveは各学科ごとにある必要があると思うのですが?そして今はどの処理ができないのでしょうか?助言ありがとうございます。0となってしまい、どうするべきか悩んでいるところです。割りが発生すると思いますが、発生していませんか?[hr][追記]2.はエラーメッセージがでてましたね。Windowsだと例外でプログラムが停止するので、発生していないのかと思ってしまいました。いう変数しかないようですが。9年前maruさん、ご回答ありがとうございます。kが最初に0になるということは、maruさんが指摘して下さって初めて気付きました。Linuxでもエラーは出なかったため、そこには気付けなかったです。kで割る理由は、平均を出す上で生徒数で割らなければいけないからだと思っていましたが、改めて考え直してみると、kではなく3で割るのが正しそうですね。それぞれの科目の平均点、それぞれの科目の標準偏差は、まだプログラム内に入れていませんでした。それらの変数を入れたプログラムを作り次第、結果をここに書かせて頂きます。ミクプラは自由にリンクできます。