Nejlepší v testu
Kdo napsal test nejlépe? Největší hodnotu ve vektoru umíte najít z lekce o cyklech: zapamatujete si první prvek a v cyklu zkoušíte, jestli některý další není větší. Tentokrát ale nestačí znát nejvyšší počet bodů. Učitelka chce vědět, kdo to je, a jméno je v jiném vektoru. Zapamatujte si proto index nejlepšího žáka. S ním pak najdete jméno i body:
std::vector<std::string> zavodnici = {"Petra", "Ondra", "Klára"};
std::vector<int> skoky = {412, 455, 430};
int nejdelsi = 0;
for (int i = 1; i < skoky.size(); i++) {
if (skoky[i] > skoky[nejdelsi]) {
nejdelsi = i;
}
}
std::cout << "Nejdelší skok: " << zavodnici[nejdelsi] << ", " << skoky[nejdelsi] << " cm" << std::endl;Nejdelší skok: Ondra, 455 cmProměnná nejdelsi začíná na 0, tedy u prvního prvku, a cyklus proto může začít až od indexu 1. Porovnání > (ne >=) znamená, že při shodě vyhraje ten, kdo je ve vektoru dřív.
Z toho uděláte funkci nejlepsi(), která index vrátí. Častá chyba je vrátit nejvyšší počet bodů místo indexu. jmena[48] je pak prvek daleko za koncem vektoru, který má jen 5 prvků, a program vypíše nesmysl nebo spadne.
Ve funkci vypisVysledky() budete index potřebovat dvakrát: pro jméno i pro body. Uložte ho proto do proměnné, třeba int index = nejlepsi(body);, a funkce se zavolá jen jednou.
Jak psát:
Pokyny
Nad funkci vypisVysledky() napište funkci int nejlepsi(const std::vector<int>& body), která vrátí index prvku s nejvíce body.
Ve funkci vypisVysledky() pod průměrem vypište jméno a body nejlepšího žáka:
Nejlepší: Filip (48 bodů)Začněte programovat zdarma
4/7