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ů: 90

Promě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: 90

index_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.

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

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

9/12