開発環境
- 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 コメント:
コメントを投稿