ローレル指数

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
松島1127
記事: 2
登録日時: 3週間前

ローレル指数

#1

投稿記事 by 松島1127 » 3週間前

C言語初学者です。初めての質問のため、不足ありましたら教えてください。
(大学の授業の課題です)

今、ローレル指数を計算するものを作りたいと思っています。
出力結果が
『体重[kg]と身長[cm]を入力してください。
ローレル指数は132です。』としたいです。(この結果は65㎏、175㎝を入力した結果です)

そのため私は

 

コード:

#include <stdio.h>
int main(void){

int weight, height;
int Rohrer;

printf("体重[kg]と身長[cm]を入力してください。\n");
scanf("%d", &weight);
scanf("%d", &height);

Rohrer= weight/height*height*height*10*10*10*10*10*10*10;

printf("ローレル指数は%dです。\n", Rohrer);
return 0;
}
paiza.IOというサイトでやっています。特にエラーも出ていないのに、実行するとローレル指数が0になります。

これはscanfのところでweight,heightの数値の識別ができてないからでしょうか?それともRohrelの計算式が間違っているのでしょうか。
初歩的な質問かと思われますが、答えていただけたら幸いです。(誤字脱字あるかもしれません。申し訳ないです。)

アバター
みけCAT
記事: 6273
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: ローレル指数

#2

投稿記事 by みけCAT » 3週間前

まず、&が全角になっているのでコンパイルエラーになる環境が多そうです。
次に、割り算が整数で行われるため、小さい数を大きい数で割ると0になってしまい、これが0になる原因です。
さらに、weight/height*height*heightは「weightをheightの3乗で割ったもの」ではなく、
「weightをheightで割り、heightを2回掛けたもの」になってしまいます。
最後に、&を半角にし、

コード:

Rohrer= weight/height*height*height*10*10*10*10*10*10*10;

コード:

Rohrer= (double)weight/height/height/height*10*10*10*10*10*10*10;
とし、

コード:

65
175
を入力したところ、出力は

コード:

体重[kg]と身長[cm]を入力してください。
ローレル指数は121です。
となりました。
これは以下の複数の計算サイトでの計算結果(の小数点以下を切り捨てたもの)と一致します。 出力結果を
「体重[kg]と身長[cm]を入力してください。
ローレル指数は132です。」としたい理由は何ですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
あたっしゅ
記事: 292
登録日時: 9年前
住所: 東京23区
連絡を取る:

Re: ローレル指数

#3

投稿記事 by あたっしゅ » 3週間前

この場合は、

コード:

Rohrer= weight*10*10*10*10*10*10*10/(height*height*height);
とすれば、(double)しなくてもいいので、若干早いです。
で、わたしも、「ローレル指数は121です。」に、なりました。
手提鞄あたっしゅ、[MrAtassyu] http://ameblo.jp/mratassyu/
手提鞄屋魚有店(てさげかばんやうおありてん)
レスがついていないものを優先して、レスしています。時々、見当外れなレスをします。

松島1127
記事: 2
登録日時: 3週間前

Re: ローレル指数

#4

投稿記事 by 松島1127 » 3週間前

返信ありがとうございました。132は完全に私の勘違いです。。惑わしてしまって申し訳ないです。。

本当にありがとうございます。。

返信

“C言語何でも質問掲示板” へ戻る