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á:
std::vector<int> vysledky = {72, 45, 90, 38, 64};
int nejvyssi = vysledky[0];
for (int vysledek : vysledky) {
if (vysledek > nejvyssi) {
nejvyssi = vysledek;
}
}
std::cout << "Nejvíc bodů: " << nejvyssi << std::endl;Nejvíc bodů: 90Proměnná nejvyssi začíná prvním prvkem. Cyklus s ní pak porovná každý výsledek: 72 není větší než 72, 45 také ne, 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á ve vektoru vůbec není. První prvek je vždycky bezpečný začátek, pokud vektor není prázdný.
Nejmenší hodnotu najdete stejně, jen místo > použijete <.
Někdy porovnáváte jednu věc, ale chcete si zapamatovat jinou. Když hledáte nejdelší jméno, porovnáváte délky jmen, ale ukládáte si samotné jméno:
std::vector<std::string> jmena = {"Eva", "Maximilian", "Adam"};
std::string nejdelsi = jmena[0];
for (std::string jmeno : jmena) {
if (jmeno.size() > nejdelsi.size()) {
nejdelsi = jmeno;
}
}
std::cout << "Nejdelší jméno: " << nejdelsi << std::endl;Nejdelší jméno: MaximilianJak psát:
Pokyny
Vektor ceny obsahuje 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.
Stejným způsobem najděte cenu nejlevnějších sluchátek: s proměnnou nejnizsi, která začíná první cenou, a s < místo >. Výsledek vypište jako Nejlevnější: 179.
Začněte programovat zdarma
8/13