2011-10-27 17 views
1

C#でかなり新しいです。ユーザーが入力した値から配列を生成するように指示するクラスの代入を行います。この部分は完了し、仕事は完璧です。配列内の繰り返し数を数えます。

これでアレイが完成しました。アレイに入力された個々の番号をConsole.WriteLineに表示できるようにする必要があります。その番号が何回出現したのか、これを達成する方法について少し迷っています。

+1

あなたの宿題をやっている人以外の人は少ししか研究をせず、特定の問題があるときに戻ってきます。 – ChrisBint

+0

あなたはどの.NETフレームワークを使用していますか?ジェネリックスおよび/またはLINQを使用するかどうかを判断するのに役立ちます。 – Kash

+0

これはプログラミング問題ではなく問題解決の問題ですIM0 –

答えて

6

LINQの使用を許可していますか?その場合は、GroupByCount()を調べてください。基本的にここで働くことができる1つのライナーがありますが、それは宿題なので、あなた自身のために細かい作業をしましょう...あなたが問題に遭遇した場合、あなたが行ったときにもっと助けてください。

+2

+1の末尾ではなく、パスの開始点を指すために+1 – Matt

0
foreach (int item in array) 
{ 
    Console.Write(item.ToString() + " "); 
    int frequency = 0; 
    for (int i = 0; i < array.Length; ++i) 
    { 
     if (array[i] == item) ++frequency; 
    } 
    Console.WriteLine(frequency.ToString()); 
} 

汚いとブルートフォース方法。あなたの配列が "int"配列であると考えてください。それ以外の場合は、タイプを変更してください。

+0

これは、各数値をカウント数だけ出力することに注意してください。つまり、{1、1、1}は "1 3; 1 3; 1 3"を返します。 –

+0

良い点。私はそのような問題を避けるために辞書の解法を使うだろう。または、重複を避けるためにIndexOf()をチェックする配列の代わりにList を使用します。 –

0

LINQを使用しないと、生成している番号を追跡できます。 Dictionaryのようなデータ構造は、これまでに何度見たことがあるかを数字にマッピングすることでうまくいく可能性があります。

例:

5

あなたは、そのキーが数字であり、値は、配列内のその特定の数のカウントされ、その後、辞書に番号が検出されるたびに値が増加中の辞書を作成することができます。

 int[] arrayOfNumbers = new int[] { 1, 4, 2, 7, 2, 6, 4, 4, }; 
     Dictionary<int, int> countOfItems = new Dictionary<int, int>(); 
     foreach (int eachNumber in arrayOfNumbers) 
     { 
      if (countOfItems.ContainsKey(eachNumber)) 
       countOfItems[eachNumber]++; 
      else 
       countOfItems[eachNumber] = 1; 
     } 

このコードは、すべてのC#のバージョンで動作しますが、あなたがC#3以上を使用している場合は、他の人が示唆されているとして、LINQを使用することができます。 =)

関連する問題