Kihagyás

3.5. Maximum- (minimum) kiválasztás

Rendezetlen elemek közül kiválasztjuk a legnagyobbat vagy a legkisebbet. Karakter és szöveg típusú változókra is érvényes. Az algoritmus lényege: a for ciklus megkezdése előtt kinevezzük az 1. elemet maximumnak (vagy minimumnak), majd belépünk a ciklusba, ahol i=2-től megyünk az utolsó elemig. A ciklusban a 2. elemtől kezdve minden elemet összehasonlítunk a maximummal, és ha az aktuális elem nagyobb mint a maximum, akkor az aktuális elem lesz az új maximum.

26. feladat

Állítsunk elő véletlenszerűen 5 egész számot a [0, 500]-ból, és írjuk ki a képernyőre 1 sorba! Írjuk ki a legnagyobb számot a képernyőre! Név: Maximumkiválasztás

Megoldás:

static void Main(string[] args)
{
    int[] a = new int[5];
    int max = 0;
    int i = 0;
    Random vsz = new Random();

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

    max = a[0];
    for (i = 1; i < 5; i++)
    {
        if (a[i] > max) max = a[i];
    }

    Console.WriteLine();
    Console.WriteLine(" A legnagyobb szám: {0}", max);
    Console.ReadKey();
}

Írjuk át a programot úgy, hogy a legkisebb számot válasszuk és írjuk ki! Mely sorokat kell átírni és hogyan?

27. feladat

Kérjünk be 5 karaktert és írjuk ki az angol ABC szerinti elsőt! Név: Minimumkiválasztás

Megoldás:

static void Main(string[] args)
{
    char[] a = new char[5];
    int i = 0;
    char min = ' ';

    Console.WriteLine(" Kérem a karaktereket:");
    Console.WriteLine(" Csak az angol ABC betűit használjuk!");

    for (i = 0; i < 5; i++)
    {
        a[i] = Convert.ToChar(Console.ReadLine());
    }

    min = a[0];
    for (i = 1; i < 5; i++)
    {
        if (a[i] < min) min = a[i];
    }

    Console.WriteLine();
    Console.WriteLine(" Az angol ABC szerinti első karakter: {0}", min);
    Console.ReadKey();
}

Karakter és szöveg típusú változók esetén a < > jelek a karakternek megfelelő ASCII kód értékétől függően döntik el, hogy melyik a nagyobb. Pl.: 'a' = ASCII 65, 'c' = ASCII 67, tehát c > a mert nagyobb az ASCII kódja, vagyis hátrébb van az ABC-ben. Az ékezetes betűk azért „borítják fel" a magyar ABC szerinti sorrendet, mert az ASCII kódjaik nem az ABC sorrendnek megfelelően lettek kiosztva. Ezt kihasználva viszont bármilyen nagybetűt kisbetűvé alakíthatunk a Convert.ToChar(nagybetuASCIIkod+32); utasítással.