某サイトの問題に手を焼いています。
ここの問題6_3なのですが、以下参照
『 0から100までの乱数を発生させてその値を表示し、0が出たら、それまで出力した整数の1の位が同じものをまとめて表示するプログラムを作りなさい。このとき、入力された整数値は、Listで作った可変長配列の中に格納すること。 』
とのことです。
考え方は同リンク問題6_1の乱数を発生させ偶奇で判別、格納のやりかたの
今度は選択しが10個に増えました。
というイメージはつかめたのですが、実際に冒頭で0から9までの順で何もはいていない(null)のList型の入れ物を10個生成したとすると、
Listクラスのどこをいじればfor文を駆使してList型クラスをnewできるのでしょうか。
自分のイメージとしては
① 最初にList型クラスを0~9verをnewする
↓
② whileで0が出るまで乱数発生
↓
③ 0以外の乱数は判別
↓
④ 判別した1の位の数をもとに
0から9までのListにList名.Add(乱数);で格納
↓
⑤ 0がでたらFin。
↓
⑥ 最後に表示
for文で0から9まで繰り返し
ただif文でnullじゃないときに数表示
それ以外なら
なしと表示
という構成です。
そのイメージが初めはつかめないために、配列を駆使し全体のコードは作成しました。
配列の場合だと
①、配列の型はStirngにして冒頭に10個newに置き換わり
④、判別した1の位をもとに格納先を検索、格納する直前にToStringして変換処理
と処理内容が少々変更します。
ちなみに以下自分が配列で作成したものです。
この配列で10個newしてるのを
Listで10個newしたいです。
c#
1 2static void Main(string[] args) 3 { 4 /* 5 * 0から100までの乱数を発生させてその値を表示し 6 * 0が出たら、それまで出力した整数の1の位が同じものを 7 * まとめて表示するプログラムを作りなさい。 8 * この際入力された整数値は、Listで作った可変長配列の中に格納すること。 9 */ 10 11 // 乱数発生のオブジェクトを生成 12 Random r = new Random(); 13 14 // 0から9までの1の位の数に応じて格納先が変わるListを生成 15 16 for (int f = 0; f <= 9; f++) 17 { 18 List<String> NumberBox_f = new List<String>(); 19 } 20 //List<String> NumberBox = new List<String>(); 21 22 23 string[] BoxOfRndomNumber = new string[10]; 24 25 for (int a = 0; a < BoxOfRndomNumber.Length; a++) 26 { 27 BoxOfRndomNumber[a] = null; 28 } 29 30 31 32 //Dictionary<int, int> NumberBox = new Dictionary<int, int>(); 33 34 while (true) 35 { 36 int RandomNumber = r.Next(0, 101); 37 Console.WriteLine("0~100までの値を出力 : " + RandomNumber); 38 // 0が出るまで繰り返し 39 if (RandomNumber == 0) 40 { 41 break; 42 } 43 // 一の位を判別するため判別用に発生した乱数と同じ値をとる変数を用意 44 int JudgementRandomNumber = RandomNumber; 45 46 /* もし値が10以上なら10で割った余りの数で1のけたを判別 47 * 例:36や50はこのifに入り、 48 * 10で割った際の余りの数に変数値を上書き 49 */ 50 51 if (JudgementRandomNumber >= 10) 52 { 53 JudgementRandomNumber %= 10; 54 } 55 // 1の位の判別完了 JudgeRNが判別用、格納用はRN 56 57 // 0から9までの配列に各々格納 58 for (int i = 0; i <= 9; i++) 59 { 60 if (JudgementRandomNumber == i) 61 { 62 BoxOfRndomNumber[JudgementRandomNumber] += " " + RandomNumber.ToString(); 63 } 64 } 65 } 66 67 for (int j = 0; j <= 9; j++) 68 { 69 if (BoxOfRndomNumber[j] != null ) 70 { 71 Console.WriteLine("一の位が{0}:{1}", j, BoxOfRndomNumber[j]); 72 } 73 else 74 { 75 Console.WriteLine("一の位が{0}:なし", j); 76 } 77 } 78 System.Threading.Thread.Sleep(100000); 79 } 80
回答5件
あなたの回答
tips
プレビュー