学校の宿題で、身長と体重を入力して、そのデータから場合わけしてコメントを表示するプログラムなんですが、
うまいこといかなくて困ってます。
以下にソースコードを記します。
#include<stdio.h>
#include<stdlib.h>
main()
{
int weight,height;
printf("体重を入力してください:");
scanf("%d",&weight);
printf("身長を入力してください:");
scanf("%d",&height);
if(weight > (height - 105) * (110 /100) )
printf("太り過ぎです\n");
else if(weight >= (height - 105) * (90 / 100) &&
weight <= (height - 105) * (110 / 100) )
printf("健康です.この状態を維持しましょう\n");
else if(weight < (height -105) * (90 / 100) )
printf("やせ過ぎです。もう少し体力をつけましょう\n");
exit(0);
}
標準体重を height-105 で表し、標準体重の1割増しより体重が重い場合と、標準体重の1割減よりも体重が低い場合、
またその間の時にそれぞれコメントするプログラムです。
しかし、なぜか標準体重の1割減よりも体重が低い場合が表示されず、1割増と1割減の間の時のコメントが表示されます。
なぜでしょうか。コンパイルしてもエラーはでません。
ご教授お願いいたします。
標準体重のプログラム
Re:標準体重のプログラム
110/100や90/100はともにint型なので結果もint型になり、
110/100は1、90/100は0になってしまいます。
素直に1.1や0.9と書いてみてはどうでしょうか。
それから、やせ過ぎ, 太り過ぎ, 健康の順番にすることで、
if ~ else if ~ elseの形にできるので、&& 演算子を使う必要がなくなります。

110/100は1、90/100は0になってしまいます。
素直に1.1や0.9と書いてみてはどうでしょうか。
それから、やせ過ぎ, 太り過ぎ, 健康の順番にすることで、
if ~ else if ~ elseの形にできるので、&& 演算子を使う必要がなくなります。

Re:標準体重のプログラム
ちょっと整理してみますね
if(weight > (height - 105) * (110 /100) )
printf("太り過ぎです\n");
else if(weight >= (height - 105) * (90 / 100) &&
weight <= (height - 105) * (110 / 100) )
printf("健康です.この状態を維持しましょう\n");
else if(weight < (height -105) * (90 / 100) )
printf("やせ過ぎです。もう少し体力をつけましょう\n");
これでheikin-105をaとした場合
a*110%<weight =条件1
a*90%<=weight<=a*110%=条件2
weight<a*90% =条件3
全部つなげると
条件3<a*90%<=条件2<=a*110%<条件1
間違ってないみたいですね。
if(weight > (height - 105) * (110 /100) )
printf("太り過ぎです\n");
else if(weight >= (height - 105) * (90 / 100) &&
weight <= (height - 105) * (110 / 100) )
printf("健康です.この状態を維持しましょう\n");
else if(weight < (height -105) * (90 / 100) )
printf("やせ過ぎです。もう少し体力をつけましょう\n");
これでheikin-105をaとした場合
a*110%<weight =条件1
a*90%<=weight<=a*110%=条件2
weight<a*90% =条件3
全部つなげると
条件3<a*90%<=条件2<=a*110%<条件1
間違ってないみたいですね。
Re:標準体重のプログラム
うまくいきました。
本当にありがとうございました。
float型に変えてやってみたんですが、それでも何故かうまくいきませんでした。
なので、言われた通り、1.1や0.9と書いてみましたらうまくいきませんでした。
float型でうまくいかなかった理由を後日教授に質問しようと思います。
本当にありがとうございました。
本当にありがとうございました。
float型に変えてやってみたんですが、それでも何故かうまくいきませんでした。
なので、言われた通り、1.1や0.9と書いてみましたらうまくいきませんでした。
float型でうまくいかなかった理由を後日教授に質問しようと思います。
本当にありがとうございました。
Re:標準体重のプログラム
あのfloat型では何を定義していたんですか?
(100/90)これが整数型だからダメって話ですよ。
(0.9)これなら実数型ですね。
これは確認してませんが、
(100.0/90.0)これも実数型だと思います
==========
ごめんなさい
(90/100)ですね
(100/90)これが整数型だからダメって話ですよ。
(0.9)これなら実数型ですね。
これは確認してませんが、
(100.0/90.0)これも実数型だと思います
==========
ごめんなさい
(90/100)ですね
