久しぶりにCの質問です。
Posted: 2007年3月19日(月) 21:01
今日から春休みに入ったのですが、この期間を利用してダイエットでもして友達をあっと言わせようとしているダッシュです。なんとなく作ってみたくなったので、BMI測定器を作ってみたのですが・・・ちょっとおかしい。
取り合えず次の2つのソースを見てください。
一つ目
#include<stdio.h>
void main(){
float a,b,c,d,e;
printf("体重を入力してください。→");
scanf("%f",&a);
b=a/165/165*10000;
c=22-b;
d=22*165*165/10000;
e=d-a;
printf("あなたのBMIは%fです。\n",b);
printf("適正BMIまで後%f。\n",c);
printf("あなたの適正体重は%fkg。適正体重まで後%fkgです。\n\n",d,e);
printf("参考:日本人の適正BMI は22\n");
}
二つ目
#include<stdio.h>
void main(){
float a,b,c,d,e,f;
printf("体重を入力してください。→");
scanf("%f",&a);
printf("身長を入力してください。→");
scanf("%f",&f);
b=a/f/f*10000;
c=22-b;
d=22*f*f/10000;
e=d-a;
printf("あなたのBMIは%fです。\n",b);
printf("適正BMIまで後%f。\n",c);
printf("あなたの適正体重は%fkg。適正体重まで後%fkgです。\n\n",d,e);
printf("参考:日本人の適正BMI は22\n");
}
一つ目は「自分の体重が最初から入っている」もので、二つ目は「身長と体重が未知数」となっています。
しかし、やってることは同じはずなのに、適正体重と適正体重まで~kgが少しずれてしまいます。
自分で分かってるところというか、あくまで想像なのですが、変数fの小数点以下に適当な数字が入ってしまうのではないだろうか?ということです。
原因ならびに対処方法を宜しくお願いします。
補足:たぶんご存知と思いますが、BMI=体重÷身長(m)÷身長(m)です
取り合えず次の2つのソースを見てください。
一つ目
#include<stdio.h>
void main(){
float a,b,c,d,e;
printf("体重を入力してください。→");
scanf("%f",&a);
b=a/165/165*10000;
c=22-b;
d=22*165*165/10000;
e=d-a;
printf("あなたのBMIは%fです。\n",b);
printf("適正BMIまで後%f。\n",c);
printf("あなたの適正体重は%fkg。適正体重まで後%fkgです。\n\n",d,e);
printf("参考:日本人の適正BMI は22\n");
}
二つ目
#include<stdio.h>
void main(){
float a,b,c,d,e,f;
printf("体重を入力してください。→");
scanf("%f",&a);
printf("身長を入力してください。→");
scanf("%f",&f);
b=a/f/f*10000;
c=22-b;
d=22*f*f/10000;
e=d-a;
printf("あなたのBMIは%fです。\n",b);
printf("適正BMIまで後%f。\n",c);
printf("あなたの適正体重は%fkg。適正体重まで後%fkgです。\n\n",d,e);
printf("参考:日本人の適正BMI は22\n");
}
一つ目は「自分の体重が最初から入っている」もので、二つ目は「身長と体重が未知数」となっています。
しかし、やってることは同じはずなのに、適正体重と適正体重まで~kgが少しずれてしまいます。
自分で分かってるところというか、あくまで想像なのですが、変数fの小数点以下に適当な数字が入ってしまうのではないだろうか?ということです。
原因ならびに対処方法を宜しくお願いします。
補足:たぶんご存知と思いますが、BMI=体重÷身長(m)÷身長(m)です