切換
舊版
前往
大廳
主題

ZeroJudge - e948: 1. 基礎代謝率 (BMR Calculation) 解題心得

Not In My Back Yard | 2020-04-20 02:13:43 | 巴幣 2 | 人氣 610

題目連結:


題目大意:
對於男性,其基礎代謝率(Basal Metabolic Rate,BMR)之公式為:
13.7 × 體重 + 5 × 身高 - 6.8 × 年齡 + 66
對於女性,其基礎代謝率之公式為:
9.6 × 體重 + 1.8 × 身高 - 4.7 × 年齡 + 655

給定一正整數 N (1 ≦ N ≦ 20),代表有 N 筆測試資料,每筆佔一列。每列給定四整數 G 、 A 、 H 、 W (G = 0 或 1 , 1 ≦ A ≦ 150 , 1 ≦ H ≦ 250 , 1 ≦ W ≦ 300),代表一個人的性別(1 為男性、0 為女性)、年紀、身高以及體重。請輸出該人的基礎代謝率,並四捨五入至小數點第二位。



範例輸入:
範例輸入一:
2
1 10 100 20
0 20 120 30

範例輸入二:
5
1 55 178 89
0 20 157 48
1 33 162 50
1 10 150 31
0 29 159 51


範例輸出:
範例輸出一:
772.00
1065.00

範例輸出二:
1801.30
1304.40
1336.60
1172.70
1294.50


解題思維:
單純的題目,套題目給的公式即可。

不過,不一定要寫成用一個 if 判斷式判斷要套男性還是女性的公式。可以將公式的那些係數存進二維陣列裡,可以為第一列是女性公式的係數、第二列是男性公式的係數。這樣輸入的 G 就可以直接對應到列數(因為 C、python 等的陣列索引值從 0 開始)。然後接著輸入年齡身高體重即可直接使用該陣列得出解答。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

您真是貴人多忘事
這能使用嗎??
2020-08-14 07:42:42
Not In My Back Yard
請問您是什麼意思呢?不確定您想問什麼。

如果是單純解出這個題目的話,是可以的;但是如果是拿來應用的話,要先研究一下題目給定的公式之正確性及實用程度。
2020-08-14 12:25:59
您真是貴人多忘事
抱歉抱歉 我意思是
本來是想輸入進去算算看
不過找不到地方可輸入數值..
2020-08-14 14:00:52
Not In My Back Yard
啊,這是因為 CodePile 這個網站只有把程式碼放上去可以隨時編輯的功能,除此之外就沒有了。

如果您的電腦沒有 C++ 的編譯器的話,也可以使用線上的編譯器,只要搜尋「Online C++ Compiler」,找到類似https://www.onlinegdb.com/online_c++_compiler
這種網站,接著把程式碼丟上去按上面的「Run」等按鈕就可以使用了。

至於輸入基本上就是小黑窗(命令提示字元)那種風格。不過因為是線上的,所以通常會有延遲。
2020-08-14 15:07:44
Not In My Back Yard
範例:
https://images2.imgbox.com/f8/5d/VJi7YvG1_o.png
2020-08-14 15:09:19
Not In My Back Yard
至於如果要拿來應用的話,除了上面談論公式的正確性以外,建議是寫一個圖形使用介面(GUI)比較好供使用者操作。

但是因為這只是解題心得,寫 GUI 在這邊是一件不必要的事(不過我也沒用 C++ 寫過,改天試試)。
2020-08-14 15:12:36
您真是貴人多忘事
謝啦
雖然您講的很用心,但我不是本科的
不知該怎麼理解@@
本意是想算算自己的BMR值而已..
正在多試試幾套計算的公式做為參考
一進來沒想到是一排排的語言XD
2020-08-14 15:16:33

更多創作