これまで第1回~第7回までPowerShellを使ってプログラムングの基礎について学んできました。
今回はそのまとめとして、練習問題を4つ用意しました。
これが全て解ければ、プログラマーとしてはビギナーを脱却し、普通のプログラマーになったと言えるでしょう!
もし解けなかった人も、答えを見て理解できれば、一人前のプログラマーにまた一歩グッと近づけます。
力試しだと思って解いてみてください!
練習問題
問題1
身長と体重を入力させて、BMIを計算して結果を表示せよ。
また、BMIの計算結果から判定基準が何になるかも、合わせて表示せよ。
BMIの計算方法と判定基準は以下を参照。
BMIの計算方法
BMI = 体重[kg] ÷ 身長[m]の2乗
判定基準
BMI | 判定基準 |
---|---|
18.5未満 | 低体重(痩せ型) |
18.5〜25未満 | 普通体重 |
25〜30未満 | 肥満(1度) |
30〜35未満 | 肥満(2度) |
35〜40未満 | 肥満(3度) |
40以上 | 肥満(4度) |
プログラムの実行イメージ
身長を入力してください。: 160
体重を入力してください。: 60
あなたのBMIは23.4375 です。
あなたは「普通体重」です。
問題2
for文を用いて、以下のように掛け算九九の表を出力するプログラムを作成せよ。
プログラムの実行イメージ
0 1 2 3 4 5 6 7 8 9
1 1 2 3 4 5 6 7 8 9
2 2 4 6 8 10 12 14 16 18
3 3 6 9 12 15 18 21 24 27
4 4 8 12 16 20 24 28 32 36
5 5 10 15 20 25 30 35 40 45
6 6 12 18 24 30 36 42 48 54
7 7 14 21 28 35 42 49 56 63
8 8 16 24 32 40 48 56 64 72
9 9 18 27 36 45 54 63 72 81
問題3
5人の身長を入力させて、各自の身長と、最も高い人、最も低い人、平均の身長をそれぞれ出力するプログラムを作成せよ。
但し、入力した身長は配列に格納するようにせよ。
プログラムの実行イメージ
1 人目の身長を入力してください。: 120
2人目の身長を入力してください。: 130
3 人目の身長を入力してください。: 140
4 人目の身長を入力してください。: 150
5 人目の身長を入力してください。: 160
1人目の身長は120です。
2人目の身長は130です。
3人目の身長は140です。
4人目の身長は150です。
5人目の身長は160です。
最も高い身長は160です。
最も低い身長は120です。
平均身長は140です。
問題4
「しりとりプログラム」を作成せよ。
入力された言葉がしりとりになっていなければゲームオーバー、
「ん」で終わればゲームオーバーとなるようにせよ。
プログラムの実行イメージ1
しりとりスタート!
しりとり
りんご
ああ
語尾がりになっていません。
ゲームオーバー
プログラムの実行イメージ2
しりとりスタート!
しりとり
りぼん
「ん」で終わります。
ゲームオーバー
問題の答え
答え1
#身長を入力してもらう
$height = Read-Host "身長を入力してください。"
#体重を入力してもらう
$weight = Read-Host "体重を入力してください。"
$BMI = $weight / [Math]::Pow($height/100,2)
#BMI値を表示
Write-Output "あなたのBMIは$BMI です。"
#判定基準
$Result = ""
if ($BMI -lt 18.5) {
$Result = "低体重(痩せ型)"
}
elseif ($BMI -lt 25) {
$Result = "普通体重"
}
elseif ($BMI -lt 30) {
$Result = "肥満(1度)"
}
elseif ($BMI -lt 35) {
$Result = "肥満(2度)"
}
elseif ($BMI -lt 40) {
$Result = "肥満(3度)"
}
else {
$Result = "肥満(4度)"
}
Write-Output "あなたは「$Result」です。"
答え2
for ($i = 0; $i -lt 10; $i++)
{
$row = ""
for ($j = 0; $j -lt 10; $j++)
{
if ($i -eq 0)
{
$row += $j.ToString().PadLeft(3," ")
}
else
{
if ($j -eq 0)
{
$row += $i.ToString().PadLeft(3," ")
}
else
{
$row += ($i * $j).ToString().PadLeft(3," ")
}
}
}
Write-Output $row
}
答え3
$HeightList = New-Object System.Collections.ArrayList
#身長を入力してもらう
for ($i = 0; $i -lt 5; $i++) {
$height = Read-Host ($i + 1) "人目の身長を入力してください。"
$HeightList.Add($height) | Out-Null
}
#各自の身長を表示
for ($i = 0; $i -lt 5; $i++) {
$text = "" + ($i + 1) + "人目の身長は" + $HeightList[$i] + "です。"
Write-Output $text
}
#最大値を表示
$MAX = 0
foreach($height in $HeightList)
{
if ($MAX -lt $height) {
$MAX = $height
}
}
$text = "最も高い身長は" + $MAX + "です。"
Write-Output $text
#最小値を表示
$MIN = [System.Int32]::MaxValue
foreach($height in $HeightList)
{
if ($MIN -gt $height) {
$MIN = $height
}
}
$text = "最も低い身長は" + $MIN + "です。"
Write-Output $text
#平均身長を表示
$SUM = 0
foreach($height in $HeightList)
{
$SUM += $height
}
$text = "平均身長は" + $SUM/$HeightList.Count + "です。"
Write-Output $text
答え4
$beforeWord = "しりとり"
Write-Output "しりとりスタート!"
Write-Output $beforeWord
while ($true)
{
$word = Read-Host
if ($word.Substring(0,1) -ne $beforeWord.Substring($beforeWord.Length - 1, 1))
{
$text = "始めの文字が" + $beforeWord.Substring($beforeWord.Length - 1, 1) + "になっていません。"
Write-Output $text
Write-Output "ゲームオーバー"
break
}
elseif ($word.Substring($word.Length - 1, 1) -eq "ん") {
Write-Output "「ん」で終わります。"
Write-Output "ゲームオーバー"
break
}
else {
$beforeWord = $word
}
}
最近のコメント