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.