Kihagyás

3.7. Szétválogatás

Szétválogatás esetén egy tömb elemeit valamilyen feltétel (vagy feltételek) alapján két vagy több másik tömbbe válogatjuk szét. Gyakorlatilag a kiválogatás tételének kibővítéséről van szó, ahol a feltételnek meg nem felelő elemeket is elmentjük egy külön helyre.

29. feladat

Állítsunk elő véletlenszerűen 20 egész számot a [0, 100] tartományban, és írjuk ki a képernyőre 1 sorba! Válogassuk szét a páros és páratlan számokat két külön tömbbe, majd írjuk ki ezek tartalmát is a képernyőre! Név: Szétválogatás

Megoldás:

static void Main(string[] args)
{
    int[] a = new int[20];
    int[] b = new int[20]; // Ide kerülnek a páros számok
    int[] c = new int[20]; // Ide kerülnek a páratlan számok
    int i = 0, j = 0;
    int db1 = 0, db2 = 0;
    Random vsz = new Random();

    for (i = 0; i < 20; i++)
    {
        a[i] = vsz.Next(101);
        Console.Write("{0,5}", a[i]);

        if (a[i] % 2 == 0)
        {
            b[db1] = a[i];
            db1++;
        }
        else
        {
            c[db2] = a[i];
            db2++;
        }
    }

    Console.WriteLine();
    Console.WriteLine(" A páros számok:");

    for (j = 0; j < db1; j++) 
    {
        Console.Write("{0,5}", b[j]);
    }

    Console.WriteLine();
    Console.WriteLine(" A páratlan számok:");

    for (j = 0; j < db2; j++) 
    {
        Console.Write("{0,5}", c[j]);
    }

    Console.ReadKey();
}

Hasonlóan a kiválogatáshoz, itt is az eredeti tömb méretével megegyező méretű cél-tömböket (b és c) kell deklarálni, hiszen elméletben előfordulhat, hogy a véletlengenerátor csak páros, vagy csak páratlan számokat sorsol ki. Két külön számlálót (db1 és db2) használunk az új tömbök indexeléséhez és az elemek darabszámának nyilvántartásához.