Slovník | Vyhledávání | Mapa webu
 
Základy informatiky pro biologyAlgoritmizace a programování Návrh algoritmů II Průměry známek

Logo Matematická biologie

Průměry známek

Vytvořte algoritmus na výpočet průměru známek jedné třídy. Je znám počet žáků ve třídě (30), ale každý žák má různý počet známek. Jejich zadávání u každého žáka bude ukončeno zadáním 0.

Na vstupu od uživatele budou známky vždy pro jednoho žáka. Hodnotou 0 ukončíme zadávání a můžeme spočítat průměr a přejít na dalšího žáka. Procházení žáků, protože známé jejich počet, provedeme v cyklu s daným počtem opakování. Zadávání známek provedeme v cyklu s podmínkou na konci. Ukážeme si jak ošetřit vstup od uživatele i možné výsledky.

Vnější cyklus bude tedy s daným počtem opakování. V jeho těle bude vše důležité. Vzhledem k tomu, že pro každého žáka musíme zadat alespoň jedno číslo - minimálně ukončovací 0 - takže bychom mohli použít na zadávání cyklus s podmínkou na konci. Samozřejmě můžeme použít i cyklus s podmínkou na začátku, a to taky uděláme.

Pro výpočet průměru potřebujeme znát součet a počet známek. Nesmíme zapomenout, že poslední zadaný údaj bude 0, takže nejprve zjistíme, jak by to v případě použití cyklu s podmínkou na konci ovlivnilo tyto dvě proměnné - zadávání a zpracování se děje před podmínkou. Přičtením 0 do součtu ho nijak nezměníme, což znamená, že to nemusíme nijak ošetřovat (inicializace pro součet by byla 0). U počtu by to tak bezpracné nebylo, poslední zadaná 0 by se nám bez dalšího ošetření také přidala do výsledného počtu, takže bychom měli o jednu známku navíc. Z tohoto důvodu bychom museli tento stav ošetřit.

První z možností, která se nabízí, je ošetřit zvětšování počtu jen pro platné známky, tj. 0 vyloučit. Další z možností je před výpočtem průměru zmenšit počet o 1, takže dostaneme platný počet známek. My bychom asi využili v podstatě podobnou možnost, a to "schovat" korekci výsledného počtu do inicializace. Počáteční hodnotu proměnné pro počet bychom nastavili na -1, takže pokud bychom zadali 5 známek a ukončovací 0, tak bychom dostali výsledný počet 5 (-1 + 6 = 5) apod.

My ovšem použijeme cyklus s podmínkou na začátku, takže inicializace proměnné pro počet i součet bude na 0. Jediné, co musíme "ošetřit" je umožnost zadání známky před vstupem do cyklu a v těle cyklu. Ve vývojovém diagramu musíme dále ošetřit, aby uživatel zadával pouze platné známky (1 až 5), další hodnoty do součtu a počtu nezahrnovat. A dále nesmíme zapomenout na situaci, kdy žák nedostal ani jednu známku, tj. výsledný počet je 0. V tomto případě by při výpočtu průměru došlo k dělení 0, a to je nepřípustná operace. Výsledný vývojový diagram si můžete prohlédnout na obrázku.

 

 
vytvořil Institut biostatistiky a analýz Lékařské fakulty Masarykovy univerzity