C言語の教科書の練習問題で分からないところがでました。
文章を載せます。
「40人いる生徒の100m走のタイムを記録して、平均値を出すプログラムを作ってください。平均値を
出すだけではなく、一人一人の記録も呼び出せるようにしてください。」
これが練習問題の文章です。
コードは少ししか書いてませんが、何かヒントやアドバイスをお願いします。
C言語の教科書の練習問題で分からないところ
Re: C言語の教科書の練習問題で分からないところ
student[40]という配列を定義したとき、アクセスできる範囲は
student[0]~student[39]の40個です。
このfor文では、student[1]~student[40]にアクセスしようとしています。
1個ずれています。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: C言語の教科書の練習問題で分からないところ
提示されたコードのfor文の中でstudentにアクセスしている部分は見当たりませんが、なんで1個ずれているとわかるのですか?
student[i-1]にアクセスすれば問題ないのではないでしょうか?
【追記】
おそらく、根拠は"student[%d]=%d"という表示形式ですね。(違っていたらごめんなさい)
表示と実際の処理コードは必ずしも一致させる必要はないですね。(一致させた方がわかりやすいかもしれないですが)
ついでに、個人的にはi < 41よりi <= 40の方がわかりやすいと思います。
最後に編集したユーザー みけCAT on 2014年6月13日(金) 09:07 [ 編集 1 回目 ]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: C言語の教科書の練習問題で分からないところ
教科書の問題でしたら、平均値の出し方についての説明はありませんか?
その中で分からないところを重点的に考えるのがよいかと...
あとソースで気になったところですが...
・student=生徒の数なら int student[40]はおかしい。
・タイムはintでいいの?
・kirokuとTimeはどう使い分ける?
・m=100 は使う?
・sumなら合計、平均ならaverage等が望ましいかと。上記では混乱の元です。
その中で分からないところを重点的に考えるのがよいかと...
あとソースで気になったところですが...
・student=生徒の数なら int student[40]はおかしい。
・タイムはintでいいの?
・kirokuとTimeはどう使い分ける?
・m=100 は使う?
・sumなら合計、平均ならaverage等が望ましいかと。上記では混乱の元です。
-
- 記事: 336
- 登録日時: 10年前
Re: C言語の教科書の練習問題で分からないところ
boxさん>>回答有難うございます。
私のミスでした。
i <= 40;このようにすれば大丈夫そうですね。
みけCATさん>>回答有難うございます。
私のちょっとしたミスです。
すみません....。
>ついでに、個人的にはi < 41よりi <= 40の方がわかりやすいと思います。
確かにそうですね。その方が分かりやすいですね..。
ookamiさん>>回答有難うございます。
>教科書の問題でしたら、平均値の出し方についての説明はありませんか?
確認したところ、平均値の求め方の説明は書いてありませんでした。
一つ一つ答えますね。
>・student=生徒の数なら int student[40]はおかしい。
student[40]=生徒の数でした。失礼しました。
確かにstudent[40]に対し、student=生徒の数はおかしいですね。
>・タイムはintでいいの?
タイムはint型で大丈夫です。そこは問題ありません。
>・kirokuとTimeはどう使い分ける?
kirokuは40人一人一人のタイムの記録ということなので、
「kirokuは40人の平均値を出すときに使い、Timeは40人のkirokuを出すときに使う」
こんな感じで使い分ければいいかと。
>・m=100 は使う?
m=100 は100m走を表していますので、使います。
>・sumなら合計、平均ならaverage等が望ましいかと。上記では混乱の元です。
わかりました。平均値を求める場合はaverageなどが望ましいわけですね?
そうします。
皆さん色々と返答回答有難うございました。
私自信も自分のコードを再確認して感じましたが、少しおかしいと思う点がいくつかありました。
見直しして見ます。
私のミスでした。
i <= 40;このようにすれば大丈夫そうですね。
みけCATさん>>回答有難うございます。
私のちょっとしたミスです。
すみません....。
>ついでに、個人的にはi < 41よりi <= 40の方がわかりやすいと思います。
確かにそうですね。その方が分かりやすいですね..。
ookamiさん>>回答有難うございます。
>教科書の問題でしたら、平均値の出し方についての説明はありませんか?
確認したところ、平均値の求め方の説明は書いてありませんでした。
一つ一つ答えますね。
>・student=生徒の数なら int student[40]はおかしい。
student[40]=生徒の数でした。失礼しました。
確かにstudent[40]に対し、student=生徒の数はおかしいですね。
>・タイムはintでいいの?
タイムはint型で大丈夫です。そこは問題ありません。
>・kirokuとTimeはどう使い分ける?
kirokuは40人一人一人のタイムの記録ということなので、
「kirokuは40人の平均値を出すときに使い、Timeは40人のkirokuを出すときに使う」
こんな感じで使い分ければいいかと。
>・m=100 は使う?
m=100 は100m走を表していますので、使います。
>・sumなら合計、平均ならaverage等が望ましいかと。上記では混乱の元です。
わかりました。平均値を求める場合はaverageなどが望ましいわけですね?
そうします。
皆さん色々と返答回答有難うございました。
私自信も自分のコードを再確認して感じましたが、少しおかしいと思う点がいくつかありました。
見直しして見ます。
-
- 記事: 336
- 登録日時: 10年前
Re: C言語の教科書の練習問題で分からないところ
この練習問題で分からない事は40人の100m走のタイムの記録を出す方法と、40人の記録の平均値を出す方法です。
-
- 記事: 336
- 登録日時: 10年前
Re: C言語の教科書の練習問題で分からないところ
naohiro19さん>>回答有難うございます。
参考程度にしておきます。
参考程度にしておきます。
-
- 記事: 336
- 登録日時: 10年前
Re: C言語の教科書の練習問題で分からないところ
あれから色々と試した結果出来ました。
皆さんアドバイス有難うございます。
練習問題を何回か読んでるうちに問われているが何なのか理解できました。
練習問題で問われていたことは、40人の100m走のタイムを記録する事(一人一人の記録を出す)
そして、平均値を出す。平均値は、40人の記録の合計/記録を計った人数 これでできました。
解決です。
皆さんアドバイス有難うございます。
練習問題を何回か読んでるうちに問われているが何なのか理解できました。
練習問題で問われていたことは、40人の100m走のタイムを記録する事(一人一人の記録を出す)
そして、平均値を出す。平均値は、40人の記録の合計/記録を計った人数 これでできました。
解決です。