僕のメモ帳

僕のメモ帳です。

Goの勉強 肥満度判定BMI計算をしてみよう 改造編

こんばんわ。たかしです。

 

昨日アップした記事のソースを、キーボードから入力された値をもとに計算するような改造をしてみたいと思います。

 

昨日の記事はこちらです。

bokunomemocho.hatenablog.com

 

「Go 入力」で調べてみたら色々記事見つかりましたが、今回はこちらの記事を参考にしたいと思います。

qiita.com

 

 

いざ、改造!

さて、今回の目的は、身長と体重を標準入力から設定することです。

fmt.Scan(&a)

というのが使えるらしいので、早速使ってみましょう。

 

あと、変数宣言で使用している「const」ですが、こいつでは標準入力から値を設定できないようだ。

あと、変数宣言するときに、ちゃんと型も指定してあげないといけないらしい。

なんで急にそんな真面目になっちゃうんGoちゃん。

というわけで、このように実装をしてみた。

// 体重と身長を指定
var weight float64
var height float64

 

そして、数値を入力するところはこう。

// 体重と身長を入力
fmt.Printf("身長を入力してください:")
fmt.Scan(&height)

fmt.Printf("体重を入力してください:")
fmt.Scan(&weight)

個人的に「身長、体重」という順番がしっくりくるものですから、順番入れ替えました。

 

ソースの全体はこうなりました。

// パッケージ名
package main

 

// パッケージ取り込み
import (
"fmt"
"math"
)

 

// 体重と身長を指定
var weight float64
var height float64

 

// mainの定義
func main(){

    // 体重と身長を入力
    fmt.Printf("身長を入力してください:")
    fmt.Scan(&height)

    fmt.Printf("体重を入力してください:")
    fmt.Scan(&weight)

    var hm = height / 100.0 // 身長をmにする
    var bmi = weight / math.Pow(hm, 2) // BMIの計算
    var bestW = math.Pow(hm, 2) * 22.0 // 適正体重の計算
    var per = weight / bestW * 100 // 肥満度の計算

    // 結果表示
    fmt.Printf("BMI = %f, 適正体重 = %f, 肥満度 = %.0f\n", bmi, bestW, per)

}

 

では、ビルドして実行してみましょう。

$ go build bmi.go
$ ./bmi
身長を入力してください:178
体重を入力してください:98
BMI = 30.930438, 適正体重 = 69.704800, 肥満度 = 141

 

おー、できたできた。

あとは、変な値が設定されたときにはじくように修正を入れたいですね。

ただ、これも記事になりそうなので、別途アップします。

 

今回はいったんここまで。

また今度。