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.