開発環境
- Microsoft Windows 8 Pro 64bit 日本語 (OS)
- Microsoft Visual Studio Express 2012 for Windows Desktop (IDE)
- プログラミング言語: C#
『初めてのC# 第2版』(Jesse Liberty+Brian MacDonald著、日向俊二訳、オライリー・ジャパン、2006年、ISBN978-487311-294-7)の 第5章(C#の実行制御)5.5(練習問題)練習5-2を解いてみる。
その他参考書籍
練習5-2.
コード
using System; using System.Text.RegularExpressions; class Tester { enum Conditions { big, multply, even, odd, other, } public void Run() { string str; double num; Regex reg = new Regex(@"^\s*$"); Regex reg1 = new Regex(@"^-?(\d+[.]?\d+|\d+)$"); Console.WriteLine("if/else if/else文"); while (true) { Console.Write("数値(正の数)を入力: "); str = Console.ReadLine(); if (reg.IsMatch(str)) { break; } if (!reg1.IsMatch(str)) { Console.WriteLine("数値を入力してください。"); continue; } num = Convert.ToDouble(str); if (num < 0) { Console.WriteLine("正の数を入力してください"); continue; } if (num >= 100) { Console.WriteLine("大きすぎる(100以上)値です。"); } else if (num % 10 == 0) { Console.WriteLine("10の倍数です。"); } else if (num % 2 == 0) { Console.WriteLine("偶数です。"); } else if (num % 2 == 1) { Console.WriteLine("奇数です。"); } else { Console.WriteLine("いずれにも当てはまりません。"); } } Console.WriteLine("switch文と列挙型(enum)"); while (true) { Console.Write("数値を入力: "); str = Console.ReadLine(); if (reg.IsMatch(str)) { break; } if (!reg1.IsMatch(str)) { Console.WriteLine("数値を入力してください。"); continue; } num = Convert.ToDouble(str); if (num < 0) { Console.WriteLine("正の数を入力してください"); continue; } Conditions condition = num >= 100 ? Conditions.big : num % 10 == 0 ? Conditions.multply : num % 2 == 0 ? Conditions.even : num % 2 == 1 ? Conditions.odd : Conditions.other; switch (condition) { case Conditions.big: Console.WriteLine("大きすぎる値です。"); break; case Conditions.multply: Console.WriteLine("10の倍数です"); break; case Conditions.even: Console.WriteLine("偶数です。"); break; case Conditions.odd: Console.WriteLine("奇数です。"); break; case Conditions.other: Console.WriteLine("いずれにも当てはまりません。"); break; default: Console.WriteLine("?"); break; } } } static void Main() { Tester t = new Tester(); t.Run(); } }
入出力結果(Console Window)
if/else if/else文 数値(正の数)を入力: c# 数値を入力してください。 数値(正の数)を入力: 101 大きすぎる(100以上)値です。 数値(正の数)を入力: 100 大きすぎる(100以上)値です。 数値(正の数)を入力: 99 奇数です。 数値(正の数)を入力: 98 偶数です。 数値(正の数)を入力: 97 奇数です。 数値(正の数)を入力: 96 偶数です。 数値(正の数)を入力: 95 奇数です。 数値(正の数)を入力: 10 10の倍数です。 数値(正の数)を入力: 9 奇数です。 数値(正の数)を入力: 8 偶数です。 数値(正の数)を入力: 7 奇数です。 数値(正の数)を入力: 6 偶数です。 数値(正の数)を入力: 5 奇数です。 数値(正の数)を入力: 0 10の倍数です。 数値(正の数)を入力: -1 正の数を入力してください 数値(正の数)を入力: 1.2 いずれにも当てはまりません。 数値(正の数)を入力: -10 正の数を入力してください 数値(正の数)を入力: -1.2 正の数を入力してください 数値(正の数)を入力: switch文と列挙型(enum) 数値を入力: 100 大きすぎる値です。 数値を入力: 95 奇数です。 数値を入力: 94 偶数です。 数値を入力: 93 奇数です。 数値を入力: 92 偶数です。 数値を入力: 91 奇数です。 数値を入力: 90 10の倍数です 数値を入力: 0 10の倍数です 数値を入力: -1 正の数を入力してください 数値を入力: -2 正の数を入力してください 数値を入力: -10 正の数を入力してください 数値を入力: 続行するには何かキーを押してください . . .
ちなみにJavaScriptの場合。
コード(TextWrangler)
var str; var reg = /^(\d+\.?\d+|\d+)$/; do{ str = prompt("数値(正の数)を入力",null); }while (! reg.test(str)); var n = parseFloat(str); var result = "if/else if/else文: "; if(n >= 100){ result += "大きすぎる値です。"; } else if(n % 10 === 0){ result += "10の倍数です。"; } else if (n % 2 === 0){ result += "偶数です。"; } else if (n % 2 === 1){ result += "奇数です。"; } else { result += "いずれにも当てはまりません。"; } result += "\nswitch文: "; var condition = n >= 100 ? "big": n % 10 === 0 ? "multiply": n % 2 === 0 ? "even": n % 2 === 1 ? "odd" : "other"; switch(condition){ case 'big': result += "大きすぎる値です。";break; case 'multiply': result += "10の倍数です。";break; case 'even': result += "偶数です。";break; case 'odd': result += "奇数です。"; break; case 'other': result += "いずれにも当てはまりません。"; } $('#pre0').text(result);
pythonの場合。
sample.py
コード(TextWrangler)
#!/usr/bin/env python3.3 #-*- coding utf-8 -*- import re pattern = re.compile(r"^\s*$") pattern1 = re.compile(r"^-?(\d+\.?\d+|\d+)$") print("if/elifステートメント") while 1: print("数値(正の数)を入力: ", end="") str = input() if re.match(pattern, str): break if not re.match(pattern1, str): print("数値を入力してください。") continue num = float(str) if num < 0: print("正の数を入力してください。") continue if num >= 100: print("大きすぎる値です。") elif num % 10 == 0: print("10の倍数です。") elif num % 2 == 0: print("偶数です。") elif num % 2 == 1: print("奇数です。") else: print("いずれにも当てはまりません。")
入出力結果(Terminal)
$ ./sample.py if/elifステートメント 数値(正の数)を入力: 1000 大きすぎる値です。 数値(正の数)を入力: 100 大きすぎる値です。 数値(正の数)を入力: 99 奇数です。 数値(正の数)を入力: 98 偶数です。 数値(正の数)を入力: 90 10の倍数です。 数値(正の数)を入力: 10 10の倍数です。 数値(正の数)を入力: 5 奇数です。 数値(正の数)を入力: 4 偶数です。 数値(正の数)を入力: 3 奇数です。 数値(正の数)を入力: 2 偶数です。 数値(正の数)を入力: 1 奇数です。 数値(正の数)を入力: 0 10の倍数です。 数値(正の数)を入力: 1.5 いずれにも当てはまりません。 数値(正の数)を入力: python 数値を入力してください。 数値(正の数)を入力: -10 正の数を入力してください。 数値(正の数)を入力: $
0 コメント:
コメントを投稿