Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2819

Bashスクリプトで九九表を作ってみた

$
0
0
Bashスクリプトを仕事で欠かないといけないので、学習がてらBashスクリプトで九九表を作成してみました。 全体のコード #!/bin/bash function munipulate(){ for ((stepNumber=1 ; stepNumber<10 ; stepNumber++)) do printf $stepNumber"の段|" for ((i=1 ; i<10 ; i++)) do result=$((stepNumber*i)); if [ ${#result} = 1 ]; then printf " $result" else printf " $result" fi done printf "\n" done } munipulate  コードの解説をします まず最初の #!/bin/bash で、bashスクリプトのファイルを実行させるために必要なものを宣言させます。要はおまじないですね。 その次に、掛け算をするために必要なメソッドを宣言します。 function munipulate(){ 一番最初の外側のfor文で、 for ((stepNumber=1 ; stepNumber<10 ; stepNumber++)) do printf $stepNumber"の段|" を生成させます。 これをすることで、九九表に必要な~の段の部分を出力します。 そして、二つ目のfor文で掛け算の答えの部分を生成させます。 for ((i=1 ; i<10 ; i++)) do result=$((stepNumber*i)); どうやっているかというと、外側のfor文の数字と今内側にあるfor文の変数をかけます。 そして、内側のfor文が抜けるタイミング(for文のループが一周したタイミング)で改行を入れることで、 1の段| 1 2 3 4 5 6 7 8 92の段| 2 4 6 8 10 12 14 16 183の段| 3 6 9 12 15 18 21 24 274の段| 4 8 12 16 20 24 28 32 365の段| 5 10 15 20 25 30 35 40 456の段| 6 12 18 24 30 36 42 48 547の段| 7 14 21 28 35 42 49 56 638の段| 8 16 24 32 40 48 56 64 729の段| 9 18 27 36 45 54 63 72 81 と横一列に出力されるのを防ぐことができます。 よし、これで完成しただろうと思っていました。 完成コードは以下です。 #!/bin/bash function munipulate(){ for ((stepNumber=1 ; stepNumber<10 ; stepNumber++)) do printf $stepNumber"の段|" for ((i=1 ; i<10 ; i++)) do result=$((stepNumber*i)); printf "$result" done printf "\n" done } munipulate ただ、これだとものすごく出力が汚いんですよね。 1の段|123456789 2の段|24681012141618 3の段|369121518212427 4の段|4812162024283236 5の段|51015202530354045 6の段|61218243036424854 7の段|71421283542495663 8の段|81624324048566472 9の段|91827364554637281 これだと18なのか1と8なのかわからないですよね。 なので、二つ目のfor文の中に条件分岐があります。 if [ ${#result} = 1 ]; then printf " $result" else printf " $result" fi まず、${#result}で、掛け算の結果の答えが一桁なのか二桁なのか判定します。 そして、もし一桁だった場合は左側に半角スペースを2ついれて、2桁だった場合は半角スペースを一つだけ挿入させることで表を整形しています。 出力するとこんな感じになります。 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 よし!!完成しました!!!!!

Viewing all articles
Browse latest Browse all 2819

Trending Articles