Wprowadzanie danych do tabeli + odczyt + Rand

0

Witam, jeżeli komuś się chcę rzucić okiem na mój kod - generowanie liczb pseudolosowych do tabeli 20-elementowej, nastepnie odczyt za pomocą foreach.
Można ten kod w jakiś sposób "ulepszyć?"

public static void Main()
        {
            int parzyste = 0;
            int nieparzyste = 0;
            int[] tablicaRand = new int[20];

            Random rand = new Random();

            for (int i = 0; i < 20; i++)
            {
                tablicaRand[i] = rand.Next();    
            }

            foreach (int item in tablicaRand)
            {
                if(item % 2 == 0)
                    {
                        parzyste++;
                    }
                else
                    {
                        nieparzyste++;
                    }
            }
            Console.WriteLine("Ilość liczb, które są parzyste: {0}", parzyste);
            Console.WriteLine("Ilosć liczb, które są nieparzyste: {0}", nieparzyste);

            if(parzyste > 10)
            {
                Console.WriteLine("W tym losowaniu zdecydowanie przeważają liczby parzyste, jest ich" + parzyste);
            }
            if(parzyste == 10)
            {
                Console.WriteLine("Tyle samo parzystych co nieparzystych!");
            }
            else
            {
                Console.WriteLine("Przeważają nieparzyste, a mianowicie jest ich: " + nieparzyste);
            }

            Console.ReadLine();
        }

I następne pytanie - macie jakieś ciekawe pomysły jak zrobić to bez definiowania odgórnie wielkości tabeli?

1

Jak dla mnie dobrze, można zamiast tablicy użyć listy wtedy nie musisz odgórnie deklarować tablicy i w pętli for zmieniasz wielkość. Możesz też podczas wykonywania programu zapytać o ilość liczb przy pomocy jakiejś zmiennej i będzie losowało ilość jaką podaje użytkownik.

2

Można np. tak:

static void Main(string[] args)
{
    var count = 20;
    var random = new Random();
    var ints = Enumerable.Range(0, count).Select(x => random.Next());
    var evenCount = ints.Count(x => x % 2 == 0);
    var oddCount = count - evenCount;
    Console.WriteLine($"Parzyste: {evenCount}");
    Console.WriteLine($"Nieparzyste: {oddCount}");

    if(evenCount > 10)
    {
        Console.WriteLine($"Więcej parzystych - {evenCount}");
    }
    else if(evenCount == 10)
    {
        Console.WriteLine("Tyle samo");
    }
    else
    {
        Console.WriteLine($"Więcej nieparzystych - {oddCount}");
    }
} 
1

Teraz wyobraź sobie, że za kilka dni będziesz chciał przetestować program dla 50 liczb, 32 liczb, 11 liczb, spójrz ile rzeczy będziesz musiał zmienić. Nawet te ostatnie porównania. Jak zauważysz bez sensu jest wprowadzanie liczb wewnątrz metod (nie mówię jako wartości stałe w klasach) np. sprawdzenie jeżeli coś jest większe niż 10 - to działa tylko dla jednego przypadku. Wyodrębnij metodę, która liczy liczby parzyste dal dowolnego zbioru N.

1 użytkowników online, w tym zalogowanych: 0, gości: 1