switch文について、ある問題があるのですが解答例だと定数なので、
全ての平方数に対応したコードを作ってみたいのですが、その場合どのようになるでしょうか?
調べたらC#7のパターンマッチングやMath.Sqrtを使うような感じかと思うのですが、
今日一日やってもうまくビルドできなかったので、
何か教えてほしいです。できればコード例でよろしくお願いします。
#問題文
switch 文を使って150以下の平方数(4=2×2、9=3×3、16=4×4というように、ある整数の二乗になっている数)
を判別するプログラムを作成せよ。
ユーザに整数値を1つ入力してもらい、 判別結果を出力するものとする。
ヒント: 要するに、ユーザからの入力が 1, 4, 9, 16, ・・・になっているかどうかを switch 文で判別します。
#####解答例
c#
1using System; 2 3class Exercise 4{ 5 static void Main() 6 { 7 Console.Write("整数を入力してください: "); 8 int n = int.Parse(Console.ReadLine()); 9 10 switch (n) 11 { 12 case 1: 13 Console.Write("{0} は平方数です。\n", n); 14 break; 15 case 2 * 2: goto case 1; 16 case 3 * 3: goto case 1; 17 case 4 * 4: goto case 1; 18 case 5 * 5: goto case 1; 19 case 6 * 6: goto case 1; 20 case 7 * 7: goto case 1; 21 case 8 * 8: goto case 1; 22 case 9 * 9: goto case 1; 23 case 10 * 10: goto case 1; 24 case 11 * 11: goto case 1; 25 case 12 * 12: goto case 1; 26 default: 27 Console.Write("{0} は平方数ではないか、150以上です\n", n); 28 break; 29 } 30 } 31}
自分の解答
c#
1 class Switch3 2 { 3 public static void Main() 4 { 5 int x = int.Parse(Console.ReadLine()); 6 7 8 9 10 const int BLOCK1 = 1; 11 int i = BLOCK1; 12 //int y = (int)Math.Sqrt(x); 13 //case int n when n< 1: return 0; 14 15 16 switch (i) 17 { 18 case BLOCK1 : 19 Console.WriteLine("平方数ではありません"); 20 break; 21 22 default: 23 Console.WriteLine("平方数です"); 24 break; 25 } 26 27 28 } 29 }
回答2件
あなたの回答
tips
プレビュー