質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

4回答

6292閲覧

Listを使って出力した乱数を奇偶にわけたいです

57svu

総合スコア28

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/05/18 05:49

某サイトのコレクションに関する問題で躓いています。
問題の条件として
Listg型の可変長配列を生成し乱数を奇偶判別し格納するというメソッドを作りなさいと
のことなのですが
List型をどのように生成しようかがまずわかりません。
そして一応Listを使わないで形にはできたのですが
これをどのようにListに変換しようかと模索中です。
自分の見立てでは
文字列をListに変換すればいい感じになりそうな気がするのですが...

アドバイス宜しくお願いします。

c#

1 /* 2 * 0から10までの乱数を発生させてその値を表示し0が出たら 3 * それまで入力した整数をすべて奇数、偶数にわけて表示するプログラムを 4 * 作りなさい。このとき、入力された奇数・偶数の値はそれぞれ別のListで 5 * 生成した可変長配列に格納すること 6 */ 7 8 // 乱数のオブジェクト生成 値の発生範囲は0~10まで 変数名はrandomNumber 9 Random r = new Random(); 10 //int randomNumber = r.Next(1,11); 11 12 // 発生した乱数の奇偶をストックできるように文字列を各々生成 13 14 String rowOddNumber = ""; 15 String rowEvenNumber = ""; 16 17 18 /* 0が出るまでコンソールで乱数を表示し続ける 19 * 文字出力のメソッドがほしいので 20 * do Whileで表示メソッドを生成 21 */ 22 23 int randomNumber; 24 do 25 { 26 randomNumber = r.Next(0, 11); 27 Console.WriteLine("0から10の値を出力:" + randomNumber); 28 if (randomNumber != 0) 29 { 30 31 if (randomNumber % 2 == 0) 32 { 33 rowEvenNumber += randomNumber.ToString() + " "; 34 } 35 else 36 { 37 rowOddNumber += randomNumber.ToString() + " "; 38 } 39 } 40 } while (randomNumber != 0); 41 Console.WriteLine(); 42 43 Console.WriteLine("偶数:" + rowEvenNumber); 44 Console.WriteLine("奇数:" + rowOddNumber); 45 46 47 System.Threading.Thread.Sleep(100000); 48 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

何のために List 型という縛りがついているか分かっていないので解けないようです。
まず List 型のコンストラクタ・メソッド・プロパティをすべて調べてください。
それが面倒ならもうやめたらいいと思います。

投稿2017/05/18 06:02

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2017/05/18 06:08

ちなみにその問題の一番上に「この問題を解くためには… → 応用編第6日目参照」とリンクが貼ってあります。これを読んで何がわからないのかがまずわかりません。
Zuishin

2017/05/18 06:11

もう一つ言うなら「努力しなくても一週間で身につく」とはどこにも書いていません。 問題が解けないのなら教えられたことを復習してください。
57svu

2017/05/19 16:58

やる気スイッチを押していただきありがとうございました! 人にものを聞く際は特にわからない箇所を具体的に抽象化するのに先ず努力したいと思います。 
Zuishin

2017/05/20 03:36

具体的に抽象化とはどういう意味なのかも調べてください。
guest

0

C#

1void Main() 2{ 3 var even = new List<int>(); 4 var odd = new List<int>(); 5 6 var random = new Random(); 7 8 while(true) 9 { 10 var value = random.Next(11); 11 Console.WriteLine($"0~10の値を出力:{value}"); 12 13 if (value == 0) break; 14 ((value % 2 == 0) ? even : odd).Add(value); 15 } 16 17 Console.WriteLine(); 18 Console.WriteLine($"偶数 : {string.Join(" ", even.Select(_ => _.ToString()))}"); 19 Console.WriteLine($"奇数 : {string.Join(" ", odd.Select(_ => _.ToString()))}"); 20}

とか。

投稿2017/05/18 14:53

編集2017/05/18 15:41
hidori

総合スコア402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/18 15:15

勉強になります。
57svu

2017/05/19 16:54

勉強になります。 ご指摘くださったコードも実践してみます!
guest

0

C#

1using System; 2using System.Collections.Generic; 3 4namespace randomtest1 5{ 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 Random r = new Random(); 11 12 List<int> even = new List<int>(); 13 List<int> odd = new List<int>(); 14 15 while (true) 16 { 17 int i = r.Next(11); 18 19 Console.WriteLine($"0~10の値を出力:{i}"); 20 21 if (i == 0) 22 { 23 break; 24 } 25 26 if (i % 2 == 0) 27 { 28 even.Add(i); 29 } 30 else 31 { 32 odd.Add(i); 33 } 34 } 35 36 string answer(List<int> data) 37 { 38 string ans = string.Empty; 39 40 for (int i = 0; i < data.Count; i++) 41 { 42 ans += data[i]; 43 44 if (i < data.Count - 1) 45 { 46 ans += ' '; 47 } 48 } 49 50 return ans; 51 } 52 53 Console.WriteLine($"偶数:{answer(even)}"); 54 Console.WriteLine($"奇数:{answer(odd)}"); 55 56 Console.ReadKey(); 57 } 58 } 59}

考えてみました。
文字列をスペースで分割してリストにする場合。

C#

1using System; 2using System.Linq; 3using System.Collections.Generic; 4 5namespace randomtest1 6{ 7 class Program 8 { 9 static void Main(string[] args) 10 { 11 string str = "a b c"; 12 13 List<string> list = str.Split(' ').ToList(); 14 15 foreach(string s in list) 16 { 17 Console.WriteLine(s); 18 } 19 20 Console.ReadKey(); 21 } 22 } 23}

#補足
hidori様にご指摘いただいた箇所を修正しました。

投稿2017/05/18 07:47

編集2017/05/18 15:02
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hidori

2017/05/18 14:46

結果に 0 が含まれちゃいませんか?
退会済みユーザー

退会済みユーザー

2017/05/18 14:48

0~10の値を出力ということになっていますが含まれちゃ不味い感じでしょうか?(>_<)
hidori

2017/05/18 14:55

出題ページに ``` 0~10の値を出力:0 ← 0が出たら、出力を終える 偶数 : 8 2 4 奇数 : 1 9 3 7 ``` とあるので、ダメなんじゃないでしょうか。
退会済みユーザー

退会済みユーザー

2017/05/18 15:06 編集

そうですね。ご指摘ありがとうございました。
57svu

2017/05/19 16:55

真っ先に考えていただきありがとうございました!
退会済みユーザー

退会済みユーザー

2017/05/19 17:54

いえいえ。どういたしまして。
guest

0

自己解決

c#

Random r = new Random ();
List <int> rowEven = new List<int>();
List <int> rowOdd = new List<int>();

while (true){

int NumberOfRandom = r.Next(0,11);
Console.WriteLine("0から10の値を出力: "+NumberOfRandom);
if (NumberOfRandom == 0)
{
break;
}
if (NumberOfRandom % 2 == 0){
rowEven.Add(NumberOfRandom);
}else{
rowOdd.Add(NumberOfRandom)
}
foreach(int a =0 ; a in rowEven){
ConsoleWriteLine(" 偶数 : "+ a);
}
foreach(int b=0 ; b in rowOdd){
Console.writeLine("奇数 : "+ b);
}

投稿2017/05/19 16:53

57svu

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問