見出し画像

PowerShell100本ノック 71~80

PowerShellを学ぶためのコンテンツとして「PowerShell100本ノック」を作成したので公開します。PowerShellは学習コンテンツが非常に少なく、自分自身も習得に苦労した経験から作成するに至りました。今回は71から80問目まで。
前提条件
- Windows PowerShell 5.1
- なにがしかのプログラミング経験がある
含まれる内容
問題 1-10 標準出力
問題 11-20 標準入力、条件分岐、繰り返し
問題 21-30 配列、多次元配列
問題 31-40 連想配列
問題 41-50 ファイル、フォルダ操作
問題 51-60 ファイル検索、パイプ処理
問題 61-70 関数
問題 71-80 再帰関数、ZIP圧縮解凍、スクレイピング
問題 81-90 環境変数
問題 91-100 実行ポリシーとレジストリ操作
記事構成
 記事の上側に問題が10問、下側に答えが10問
(上や下に行ったり来たりが面倒な様子なら構成を変えます)




問題 71‐80

71.nの階乗

整数を入力させ、その値の階乗を表示するプログラムを再帰関数を使わずに作成せよ。ただし、1以下の値を入力した場合は1と表示する。


72.再帰関数 nの階乗

整数を入力させ、その値の階乗を表示するプログラムを再帰関数を使って作成せよ。


73.入力の中断

整数値を5回入力させ、それらの値の合計を表示するプログラムをfor文を使って作成せよ。整数値を5回入力する途中で-1を入力したら中断する処理を加えよ


74.九九

九九を表示するプログラムを作成せよ


75.素数

100までの素数を表示するプログラムを作成せよ


76.通貨換算

換算したい金額(単位円)を入力すると何ドル何セントか表示するプログラムを作成せよ。1ドルは157.99円とする。1セントは1/100ドルである。結果は整数値でよい(1セント未満の四捨五入または端数切り捨て)。


77.タクシー料金

初乗り料金が1300mまで600円、それ以降は260mごとに100円のタクシーがある。このタクシーに乗った距離をm単位で入力し、料金を計算するプログラムを作成せよ。


78.ZIPファイル圧縮解凍

空のファイルc:\rensyu\test.txtを作り、ZIP圧縮せよ


79.ZIPファイル圧縮解凍

ZIPファイルC:\rensyu\test.zipをC:\rensyu\へ解凍せよ


80.スクレイピング

ヤフージャパンの主要ニュースのリンクをすべて抽出




解答 71‐80

71.nの階乗

整数を入力させ、その値の階乗を表示するプログラムを再帰関数を使わずに作成せよ。ただし、1以下の値を入力した場合は1と表示する。

# 71.
function Get-Factorial([int]$n) {
  $factorial = 1

  for ($i = 1; $i -le $n; $i++) {
    $factorial *= $i
  } 
  return $factorial
}
$n = Read-Host "整数:"
Get-Factorial -n $n


72.再帰関数 nの階乗

整数を入力させ、その値の階乗を表示するプログラムを再帰関数を使って作成せよ。

# 72.
function Get-Factorial([int]$n) {
  if ($n -le 1) {
    return 1
  } else {
    return $n * (Get-Factorial -n ($n - 1))
  }
}
$n = Read-Host "整数:"
Get-Factorial -n $n


73.入力の中断

整数値を5回入力させ、それらの値の合計を表示するプログラムをfor文を使って作成せよ。整数値を5回入力する途中で-1を入力したら中断する処理を加えよ

# 73.
$sum = 0
for($i = 0;$i -lt 5;$i++){
  $in = [int](read-host "数値")
  if($in -eq -1) {
    break
  }
  $sum += $in
}
write-host "合計は $sum"


74.九九

九九を表示するプログラムを作成せよ

# 74.
for ($i = 1; $i -le 9; $i++) {
  for ($j = 1; $j -le 9; $j++) {
    $result = $i * $j
    $tmp = "{0,02}" -f $result
    Write-Host "$tmp" -NoNewline
    if ($j -ne 9) {
      Write-Host " " -NoNewline
    }
  }
  Write-Host ""
}


75.素数

100までの素数を表示するプログラムを作成せよ

# 75.
$primes = @(1,2)
for ($i = 2; $i -le $max; $i++) {
  $isPrime = $true
  for ($j = 2; $j -lt [math]::sqrt($i) + 1; $j++) {
    if ($i % $j -eq 0) {
      $isPrime = $false
      break
    }
  }
  if ($isPrime) {
    $primes += $i
  }
}
$primes -join ","


76.通貨換算

換算したい金額(単位円)を入力すると何ドル何セントか表示するプログラムを作成せよ。1ドルは157.99円とする。1セントは1/100ドルである。結果は整数値でよい(1セント未満の四捨五入または端数切り捨て)。

# 76.
$dollar_en = 157.99
$en = [int](read-host "換算したい金額(単位円)")
$dollar = ($en / $dollar_en)
$cent = (($en % $dollar_en)*100 / $dollar_en)
$answer = "{0:#}ドル{1:#.0}セント" -f ($dollar,$cent)
write-host $answer


77.タクシー料金

初乗り料金が1300mまで600円、それ以降は260mごとに100円のタクシーがある。このタクシーに乗った距離をm単位で入力し、料金を計算するプログラムを作成せよ。

# 77.
$kyori= [int](read-host "距離(単位m)")
$ryoukin = 600
$kyori -= 1300
$kyori -= 260
while($kyori -ge 0) {
  $ryoukin+=100
  $kyori-=260
}
write-host $ryoukin


78.ZIPファイル圧縮解凍

空のファイルc:\rensyu\test.txtを作り、ZIP圧縮せよ

# 78.
New-Item -Path c:\rensyu\test.txt
Compress-Archive -Path c:\rensyu\test.txt -DestinationPath c:\rensyu\test.zip


79.ZIPファイル圧縮解凍

ZIPファイルC:\rensyu\test.zipをC:\rensyu\へ解凍せよ

# 79.
Expand-Archive -Path C:\rensyu\test.zip -DestinationPath C:\rensyu\


80.スクレイピング

ヤフージャパンの主要ニュースのリンクをすべて抽出

# 80.
$response = Invoke-WebRequest -Uri "https://www.yahoo.co.jp"
$html = $response.ParsedHtml
$elements =$html .getElementsByTagName("a")
foreach($i in $elements) {
  if($i.href -like "*pickup*") {
    write-host $i.href
  }
}





#PowerShell #100本ノック #プログラミング問題 #プログラミング学習 #Windows #教材 #つくってみた #プログラミング初心者 #再帰関数 #ZIP圧縮解凍 #スクレイピング


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?