台形の面積をプログラムする問題で、上底がa.下底がb.高さをhとするのですが、あるプログラム例を出されて、その実行結果が80になる理由を知りたいです。また、どうプログラムを改善すると正答の100になるのか知りたいです。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 台形の面積をプログラムする問題で、上底がa.下底がb.高さをhとするのですが、あるプログラム例を出されて、その実行結果が80になる理由を知りたいです。また、どうプログラムを改善すると正答の100になるのか知りたいです。

Re: 台形の面積をプログラムする問題で、上底がa.下底がb.高さをhとするのですが、あるプログラム例を出されて、その実行結果が80になる理由を知りたいです。また、どうプログラムを改善すると正答の100になるのか知りたいです。

#2

by box » 4年前

a * h
という式では8 * 10 = 80を求めています。
一方、
1 / 2 * (b - a) * h
では、
1 / 2
を行なった時点でint型どうしの割り算のルールに従いゼロとなっています。
したがって、その後で(b - a)をかけようがhをかけようが、
1 / 2 * (b - a) * h
の結果はゼロです。
よって、Sの値は80とゼロを加えた80になります。別段不思議なことではありません。
正答の100を得るには2で割るのを最後にすればよいでしょう。つまり、
S=a * h + (b - a) * h / 2;

ページトップ