# Question05 - 値ごとの分岐 本資料の練習問題は、複数のプログラミング言語(Java / C# / PHP / Python)で共通して利用できるよう記述されています。静的型付け・動的型付けの違いや文字列の連結ルールなど、言語固有の文法仕様に基づき、問題文の表現をご使用の言語の仕様に適宜読み替えて進めてください。 ## この問題のねらい - 1つの値についてとりうる複数のケースを列挙し、値ごとに異なる処理を行う分岐を書けること - どのケースにも当てはまらない場合の処理(既定の処理)を書けること - 複数の条件を組み合わせて、最終的な結果を判定できること 以下の設問はそれぞれ独立したプログラムとして実装してください。 --- ## 設問1 `今日の運勢を占います。` と出力したあと、0~5のいずれかのランダムな整数を生成し、変数 `num` に格納すること。 `num` の値に応じて、次のいずれかを出力すること。 - `0` の場合: `あなたの運勢は「大吉」です` - `1` の場合: `あなたの運勢は「吉」です` - `2` の場合: `あなたの運勢は「中吉」です` - `3` の場合: `あなたの運勢は「小吉」です` - `4` の場合: `あなたの運勢は「末吉」です` - `5` の場合: `あなたの運勢は「凶」です` - 補足: `num` の値はランダムに決まるため、実行のたびに出力内容は変わってよい。`num` の取りうる値(0~5)それぞれに対応する出力が正しく行われることを確認する。 --- ## 設問2 `1つ目の数値を入力してください` と出力したあと数値の入力を1つ受け取り、整数として変数 `num1` に格納すること。続けて `2つ目の数値を入力してください` と出力したあと数値の入力を1つ受け取り、整数として変数 `num2` に格納すること。さらに `計算方法を選択してください` と出力したあと、計算方法を表す1文字の記号の入力を受け取り、文字列として変数 `choice` に格納すること。 `choice` の値に応じて、次の計算を行い、その結果の数値を出力すること。 - `+` の場合: `num1` と `num2` を足した値 - `-` の場合: `num1` から `num2` を引いた値 - `*` の場合: `num1` と `num2` を掛けた値 - `/` の場合: `num1` を `num2` で割った値(商) - `%` の場合: `num1` を `num2` で割った余り - 上記のいずれでもない場合: `計算に失敗しました` と出力する --- ## 設問3 ハイ&ローゲームを行うプログラムを作成する。 1. 次の内容を出力する(区切り線の記号や幅、見出しの位置などの体裁は下記と厳密に一致しなくてよい)。 ``` ========================================= ゲームの説明 ========================================= これからハイ&ローゲームを行います。 ハイ&ローゲームは、あなたのカードがディーラーのカードより大きいか小さいかを予想するゲームです。 ========================================= ゲーム開始 ========================================= ``` 2. 1~13のいずれかのランダムな整数を生成し、ディーラーのカードを表す変数 `dealerCard` に格納する。 3. `ディーラーのカードは{dealerCardの値}です` と出力する。 4. 1~13のいずれかのランダムな整数を生成し、自分のカードを表す変数 `myCard` に格納する(この時点ではまだ出力しない)。 5. 空行を1行出力したあと、`あなたのカードがディーラのカードより大きい場合は H 小さい場合は L を入力してください。` と `※ カードの数値が同じ場合はあなたの勝ちです。` を出力する。そのうえで、あなたのカードがディーラーのカードより大きいか小さいかを、1文字の記号(`H`: 大きい、`L`: 小さい)で予想させ、その入力を文字列として変数 `judgement` に格納する。 6. `あなたのカードは{myCardの値}です` と出力する。 7. 空行を1行出力したあと、次の区切り線を出力する。 ``` ========================================= 勝敗判定 ========================================= ``` 8. 次のルールに従って勝敗を判定し、結果を出力すること。 - `myCard` と `dealerCard` が同じ値の場合は、予想の内容によらず勝ちとする。 - `judgement` が `H` で、`myCard` が `dealerCard` より大きい場合は勝ち。 - `judgement` が `L` で、`myCard` が `dealerCard` より小さい場合は勝ち。 - 上記に当てはまらない場合は負けとする。 - ただし `judgement` が `H`・`L` のいずれでもない場合は、勝敗を判定せずに `不正な値が入力されました` と出力する。 - 予想が当たった場合は `あなたの勝ちです`、外れた場合は `あなたの負けです` と出力する。 - 補足: `dealerCard` と `myCard` の値はランダムに決まるため、実行のたびに出力内容は変わってよい。上記の勝敗判定ルールが正しく反映されていることを確認する。