3

int型の配列にデータを読み込むプログラムを作成する必要があります。有効な値は0〜10です。プログラムは、入力された値の数を判別する必要があります。個別のエントリのリストと、そのエントリが発生した回数のカウントを出力します。」

太字部分に問題があります、これは私がこれまでに持っているものです...

static void Main(string[] args)
{
    Console.WriteLine("How many scores will you enter?");

    int total = 0;
    string inValue;
    string Size = Console.ReadLine();
    int arraySize = Convert.ToInt32(Size);
    int [] ScoreArray = new int [arraySize];

    for (int i = 0; i < ScoreArray.Length; i++)
    {

        Console.Write("Enter a Number between 0 and 10, #{0}: ", i + 1);
        inValue = Console.ReadLine();
        ScoreArray[i] = Convert.ToInt32(inValue);

        total += ScoreArray[i];
    }

    Console.WriteLine("Number of scores entered: " + arraySize);
    Console.Read();
}
4

3 に答える 3

0

このコードはあなたが必要とするすべてを作ります:

        static void Main(string[] args)
        { 
            //input data
            int[] inputArray = new int[5];
            int enteredCount = 0;
            string enteredLine = string.Empty;

            Console.WriteLine("Enter numbers from 0 to 10. If you want to end please enter nothing");
            //while user input something not blank
            while ((enteredLine = Console.ReadLine()) != string.Empty)
            {
                //inputArray has no more elements, resize it
                if (enteredCount == inputArray.Length)
                {
                    Array.Resize<int>(ref inputArray, inputArray.Length + 5);
                }

                //new entered value to array
                inputArray[enteredCount] = int.Parse(enteredLine);
                enteredCount++;
            }

            //now we need count all uniq elements
            //special array. Index is a number from 0 to 10. Value is a count of that value
            int[] counts = new int[11];
            for (int i = 0; i < enteredCount; i++)
            {
                int enteredNumber = inputArray[i];
                counts[enteredNumber]++;
            }

            Console.WriteLine("Totally were entered {0} numbers", enteredCount);

            //now we now count of each number from 0 to 11. Let' print them
            for (int i = 0; i < 11; i++)
            {
                //Print only numbers, that we entered at least once
                if (counts[i] != 0)
                    Console.WriteLine("Number {0} were entered {1} times", i, counts[i]);
            }

            Console.ReadLine();
        }
于 2012-05-04T22:13:42.337 に答える
0

ここで重要なのは、有効な値が0〜10の間であるということです。配列インデックスを使用して、各値自体を格納します。たとえば、値5を処理する場合は、増分しますvalues[5]

したがって、最初に次のような配列を初期化します。

int[] values = new int[11]; //Values 0-10

次に、ユーザーが空白を入力するまでループします。

while(true)
{
   string inValue = Console.ReadLine();
   if(String.IsNullOrEmpty(inValue)) break;

   values[Convert.ToInt32(inValue)]++; //Bounds checking would be nice here
}

次に、配列を1回ループして、値が0より大きい任意のインデックスを出力することにより、ソートされた個別のリストを表示できます。

for(int i = 0; i < values.length; i++)
{
   if(values[i] > 0)
   {
      Console.WriteLine("Value {0} was entered {1} time(s)..", i, values[i]);
   }
}

これはおそらくあなたの教授が探しているものです。私は上記のコードをテストしていません、それはあなたの仕事です:)

于 2012-05-04T21:58:36.983 に答える
0

必ず追加してください

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

それで

Console.WriteLine("Distinct values entered & No. of times values entered:");

int[] distinctvalues = ScoreArray.Distinct().OrderBy(x => x).ToArray(); 
//Finds distinct values and orders them in ascending order.

int[] distinctcount = ScoreArray.FindAllIndexof(distinctvalues).ToArray();
//Finds how many times distinct values are entered.

for (int i = 0; i < distinctvalues.Length; i++)
   Console.WriteLine(distinctvalues[i].ToString() + " --------- Entered " + 
   distinctcount[i].ToString() + " times");

Console.Read();

FindAllIndexof関数の場合、クラスExtension Methodstatic class外部にを作成しますProgram

public static class EM
{
    public static int[] FindAllIndexof<T>(this IEnumerable<T> values, T[] val)
    {
        List<int> index = new List<int>();
        for (int j = 0; j < val.Length; j++)
            index.Add(values.Count(x => object.Equals(x, val[j])));
        return index.ToArray();
    }
}

出力

ここに画像の説明を入力してください

于 2012-05-05T03:33:27.127 に答える