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

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

ただいまの
回答率

91.76%

  • C#

    4153questions

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

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

解決済

回答 4

投稿 2017/05/18 14:49

  • 評価
  • クリップ 0
  • VIEW 444

57svu

score 14

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

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

 /*
            * 0から10までの乱数を発生させてその値を表示し0が出たら
            * それまで入力した整数をすべて奇数、偶数にわけて表示するプログラムを
            * 作りなさい。このとき、入力された奇数・偶数の値はそれぞれ別のListで
            * 生成した可変長配列に格納すること
            */

            //  乱数のオブジェクト生成  値の発生範囲は0~10まで 変数名はrandomNumber
            Random r = new Random(); 
            //int randomNumber = r.Next(1,11);

            // 発生した乱数の奇偶をストックできるように文字列を各々生成

            String rowOddNumber = "";
            String rowEvenNumber = "";


           /* 0が出るまでコンソールで乱数を表示し続ける
            * 文字出力のメソッドがほしいので
            * do Whileで表示メソッドを生成
              */

            int randomNumber;
            do
            {
                randomNumber = r.Next(0, 11);
                Console.WriteLine("0から10の値を出力:" + randomNumber);
                if (randomNumber != 0)
                {

                    if (randomNumber % 2 == 0)
                    {
                        rowEvenNumber += randomNumber.ToString() + " ";
                    }
                    else
                    {
                        rowOddNumber += randomNumber.ToString() + " ";
                    }
                }
            } while (randomNumber != 0);
            Console.WriteLine();

            Console.WriteLine("偶数:" + rowEvenNumber);
            Console.WriteLine("奇数:" + rowOddNumber);


            System.Threading.Thread.Sleep(100000);
        }
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+1

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

投稿 2017/05/18 15:02

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2017/05/18 15:08

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

    キャンセル

  • 2017/05/18 15:11

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

    キャンセル

  • 2017/05/20 01:58

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

    キャンセル

  • 2017/05/20 12:36

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

    キャンセル

+1

using System;
using System.Collections.Generic;

namespace randomtest1
{
    class Program
    {
        static void Main(string[] args)
        {
            Random r = new Random();

            List<int> even = new List<int>();
            List<int> odd = new List<int>();

            while (true)
            {
                int i = r.Next(11);

                Console.WriteLine($"0~10の値を出力:{i}");

                if (i == 0)
                {
                    break;
                }

                if (i % 2 == 0)
                {
                    even.Add(i);
                }
                else
                {
                    odd.Add(i);
                }
            }

            string answer(List<int> data)
            {
                string ans = string.Empty;

                for (int i = 0; i < data.Count; i++)
                {
                    ans += data[i];

                    if (i < data.Count - 1)
                    {
                       ans += ' ';
                    }
                }

                return ans;
            }

            Console.WriteLine($"偶数:{answer(even)}");
            Console.WriteLine($"奇数:{answer(odd)}");

            Console.ReadKey();
        }
    }
}


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

using System;
using System.Linq;
using System.Collections.Generic;

namespace randomtest1
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "a b c";

            List<string> list = str.Split(' ').ToList();

            foreach(string s in list)
            {
                Console.WriteLine(s);
            }

            Console.ReadKey();
        }
    }
}

補足

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

投稿 2017/05/18 16:47

編集 2017/05/19 00:01

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2017/05/18 23:46

    結果に 0 が含まれちゃいませんか?

    キャンセル

  • 2017/05/18 23:48

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

    キャンセル

  • 2017/05/18 23:55

    出題ページに
    ```
    0~10の値を出力:0 ← 0が出たら、出力を終える

    偶数 : 8 2 4
    奇数 : 1 9 3 7
    ```
    とあるので、ダメなんじゃないでしょうか。

    キャンセル

  • 2017/05/19 00:06 編集

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

    キャンセル

  • 2017/05/20 01:55

    真っ先に考えていただきありがとうございました!

    キャンセル

  • 2017/05/20 02:54

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

    キャンセル

+1

void Main()
{
    var even = new List<int>();
    var odd = new List<int>();

    var random = new Random();

    while(true)
    {
        var value = random.Next(11);
        Console.WriteLine($"0~10の値を出力:{value}");

        if (value == 0) break;
        ((value % 2 == 0) ? even : odd).Add(value);
    }

    Console.WriteLine();
    Console.WriteLine($"偶数 : {string.Join(" ", even.Select(_ => _.ToString()))}");
    Console.WriteLine($"奇数 : {string.Join(" ", odd.Select(_ => _.ToString()))}");
}


とか。

投稿 2017/05/18 23:53

編集 2017/05/19 00:41

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2017/05/19 00:15

    勉強になります。

    キャンセル

  • 2017/05/20 01:54

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

    キャンセル

check解決した方法

-1

```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/20 01:53

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

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

ただいまの回答率

91.76%

関連した質問

同じタグがついた質問を見る

  • C#

    4153questions

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