肥満度を知るのに BMI (Body Mass Index) がよく使われる。BMI は、 体重 w Kg, 身長 h m に対してつぎの式で定義される値をいう。
w / h^2
何人かの人について、名前・身長・体重が与えられているとき、 その中で一番 BMI の小さい人を見つけるプログラムを作れ。
入力は、何行かにわたる。各行には、名前(ローマ字姓)、身長(単位 cm)、体重(単位 Kg)が この順に1個以上の空白で区切られて書かれている。標準入力がキーボードから行われるときは、入力の最後に C-d を入力する。出力は、 BMI が最も小さかった人の名前を1行として書き出す。
が問題です。下のソースコードを実行した結果答えが一致しませんでした。数人いる中、どの場合でも一番上に来ている人が答えとなっているように感じます。多分ですが、for文の中身が上手くできていないと思うのですがわかりません。
どなたかお答えいただけると嬉しいです。
入力を以下のようにすると
kawamoto 170 65
shimano 167 60
okano 180 90
出力結果がkawamotoとなりました。本来ならshimanoとなるのが正解です。
コード#include <stdio.h> struct number{ char name[1000]; double h; double w; double x; }; int main(void){ struct number b[1000]; int i; while(1){ if(scanf("%s %d %d", b[i].name, &b[i].h, &b[i].w)==EOF){ b[i].x=b[i].w/(b[i].h*b[i].h); break; } i++; } double min=100; int num; int j=0; for(j=0;j<i;j++){ if(min>b[j].x){ min=b[j].x; num=j; } } printf("%s\n", b[num].name); return 0; }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/08 14:04
2020/06/08 15:01