Největší hodnota
Třetí vzor hledá největší hodnotu. Představte si, že procházíte hromádku písemek a hledáte tu nejlepší. Vezmete do ruky první písemku. Pak se díváte na ostatní jednu po druhé, a kdykoli je některá lepší než ta, kterou držíte, vezmete si místo ní tu lepší. Na konci držíte nejlepší písemku. V kódu je písemka v ruce proměnná:
int vysledky[] = {72, 45, 90, 38, 64};
int pocet = sizeof(vysledky) / sizeof(vysledky[0]);
int nejvyssi = vysledky[0];
for (int i = 1; i < pocet; i++) {
if (vysledky[i] > nejvyssi) {
nejvyssi = vysledky[i];
}
}
printf("Nejvíc bodů: %d\n", nejvyssi);Program vypíše:
Nejvíc bodů: 90Proměnná nejvyssi začíná prvním prvkem. Proto může cyklus začít indexem 1: první prvek není potřeba porovnávat se sebou samým (začít od 0 by ale fungovalo také). 45 není větší než 72, ale 90 ano, takže se nejvyssi změní na 90. Ani 38, ani 64 nejsou větší než 90, a tak 90 zůstane až do konce.
Proč nezačít nulou? Protože 0 nemusí být mezi hodnotami. Kdyby byly všechny hodnoty záporné, třeba zimní teploty {-5, -2, -8}, zůstala by počáteční 0 největší a program by vypsal 0, tedy teplotu, která v poli vůbec není. První prvek je vždycky bezpečný začátek.
Nejmenší hodnotu najdete stejně, jen místo > použijete <.
Někdy potřebujete vědět i to, kde největší hodnota je. Pak si její index pamatujte ve druhé proměnné a obě proměnné měňte zároveň:
int vysledky[] = {72, 45, 90, 38, 64};
int pocet = sizeof(vysledky) / sizeof(vysledky[0]);
int nejvyssi = vysledky[0];
int index_nejlepsiho = 0;
for (int i = 1; i < pocet; i++) {
if (vysledky[i] > nejvyssi) {
nejvyssi = vysledky[i];
index_nejlepsiho = i;
}
}
printf("Nejvíc bodů má student číslo %d: %d\n", index_nejlepsiho + 1, nejvyssi);Program vypíše:
Nejvíc bodů má student číslo 3: 90index_nejlepsiho začíná na 0, tedy na indexu prvního prvku, a mění se pokaždé, když se mění nejvyssi. Na konci je v něm 2, takže číslo studenta počítané od 1 je index_nejlepsiho + 1.
Jak psát:
Pokyny
V poli ceny jsou ceny sluchátek v e-shopu. Vytvořte proměnnou nejvyssi typu int s první cenou, ceny[0].
Projděte ceny cyklem, a kdykoli je cena větší než nejvyssi, uložte ji do nejvyssi. Za cyklem vypište výsledek jako Nejdražší: 2499.
Zjistěte, která sluchátka to jsou. Vedle proměnné nejvyssi vytvořte proměnnou index_nejvyssi s hodnotou 0 a v cyklu do ní uložte index i pokaždé, když měníte nejvyssi. Za cyklem vypište na další řádek číslo sluchátek počítané od 1: Číslo: 4.
Začněte programovat zdarma
9/12