Programmierung

[C#] Häufigstes Element aus einer Liste bekommen

Die Aufgabe für heute war kurz und klar: Geben Sie 50 Zufallszahlen im Bereich von 100 – 200 sortiert aus.
Und anschließend geben Sie die am häufigst vorkommende Zahl aus.

Dafür habe ich wie folgt angefangen: Zuerst habe ich eine Funktion geschrieben, die mir 50 zufällige Zahlen zurückgibt:

public static int[] give50Numbers()
{
    // Array, in dem die zufälligen Zahlen gespeichert werden
    int[] result = new int[50];
    Random r = new Random();
 
    for (int i = 0; i < 50; i++)
    {
        // die Zahlen sollten zwischen 100 und 200 sein
        result[i] = r.Next(100, 200);
    }
 
    // in der Aufgabe steht, dass die Zahlen sortiert sein sollten
    // deswegen noch ein Sort
    Array.Sort(result);
    return result;
}

Im zweiten Schritt suche ich die Zahl, die am häufigsten vorkommt und zähle auch deren Anzahl:

public static int giveCountMaxNumber(int[]  p_numbers, out int number)
{
    int max_Countnumber = 0;
    number = 0;
 
    for (int i = 0; i < p_numbers.Length; i++)
    {
        int l_count = 0;
        for (int j = 0; j < p_numbers.Length; j++)
        {
            if (p_numbers[i] == p_numbers[j])
            {
                l_count++;
            }
        }
 
        if (l_count > max_Countnumber)
        {
            max_Countnumber = l_count;
            number = p_numbers[i];
        }
    }
 
    return max_Countnumber;
}

Nun habe ich die wichtigsten Funktionen. Nun kann ich die zufälligen Zahlen ausgeben mit der am häufigsten vorkommenden Zahl:

static void Main(string[] args)
{
    int[] numbers = give50Numbers();
    for (int i = 0; i < numbers.Length; i++)
    {
        Console.Write(numbers[i] + ", ");
    }
 
    int max_number;
    int count = giveMaxNumber(numbers, out max_number);
    Console.WriteLine(string.Format("Häufigste Zahl: {0}, Anzahl vorkommen: {1}", max_number, count));
    Console.ReadLine();
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.