Úloha 3 – Zpracování a výpis dat z 2D pole

Site: Moodle ZČU
Course: Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný)
Book: Úloha 3 – Zpracování a výpis dat z 2D pole
Printed by: Nepřihlášený host
Date: Sunday, 18 October 2026, 3:27 PM

Úvod do úlohy

Teoreticky už víme, že dvourozměrné pole je pole, které obsahuje další pole. Teď se podíváme na praktické příklady, kde tato struktura opravdu pomáhá. Typickou ukázkou je tabulka nebo matice – například malá násobilka, tabulka výsledků nebo herní mapa. Abychom mohli všechny prvky takové struktury pohodlně projít, použijeme vnořené cykly: první cyklus projde řádky a druhý cyklus projde prvky uvnitř řádku (sloupce). Studenti si také vyzkouší práci s „nerovnoměrnými“ daty, kdy každý řádek může mít jiný počet prvků.

Teorie a principy

  • Vnořený cyklus: dva cykly for za sebou – vnější pro řádky, vnitřní pro sloupce.

  • Výpis tabulky: do konzole můžeme výpis spojovat do řádků pomocí join(). Na webové stránce použijeme <br> pro zalomení.

  • Nerovnoměrná data: v JavaScriptu není nutné, aby všechny řádky měly stejnou délku. Proto je bezpečnější použít pole[i].length místo pevného čísla.

Praktické příklady kódu

1. Malá násobilka (4×4 tabulka)

2. Výpis matice na webovou stránku

3. Nerovnoměrná data – různé délky řádků

Typické chyby / záludnosti

  • Pevné číslo místo length: studenti někdy zapomenou, že každý řádek může mít jinou délku, a místo data[i].length použijí pevný limit.

  • Prohození indexů: snadno se zamění pořadí [řádek][sloupec].

  • Nevhodný výpis: při console.log(matice[i]) dostaneme celý řádek jako pole, pro hezký formát je vhodné použít join(" ").

  • Zapomenuté zalomení: při výpisu do HTML je nutné přidat <br> nebo jiný prvek pro nový řádek.

Shrnutí

  • Dvourozměrná pole se hodí pro reprezentaci tabulek, matic a složitějších dat.

  • Vnořený cyklus umožňuje projít všechny řádky i sloupce.

  • join() usnadňuje převod řádku na hezký text.

  • Nerovnoměrná data nejsou problém – proto vždy používej data[i].length.

  • Výstup lze směřovat jak do konzole, tak na webovou stránku.

Úloha

Zadání (kontext úlohy):

Sportovní klub má tabulku výsledků tří závodníků. Každý závodník má zapsané své časy ve třech závodech. Data uložíš do dvourozměrného pole, vypíšeš je do konzole v podobě tabulky, spočítáš průměrný čas každého závodníka a výsledky hezky vypíšeš.


Cíl úlohy:

Procvičit použití vnořených cyklů for, práci s pole[i].length pro různé délky řádků a formátovaný výpis pomocí join().


Vstupní podmínky:

Student pracuje pouze s nově vytvořeným souborem script.js.


Požadovaný výstup:
  1. Vytvoř dvourozměrné pole vysledky, kde každý řádek bude představovat jednoho závodníka a obsahovat tři časy (libovolná čísla).

  2. Vypiš celou tabulku do konzole po řádcích (join(" ")).

  3. Pomocí vnořených cyklů spočítej průměr každého závodníka (součet časů děleno počtem).

  4. Do konzole vypiš text:

    • „Průměrný čas závodníka 1: X“

    • „Průměrný čas závodníka 2: Y“

    • atd.


Doplňující pokyny:
  • Indexování začíná od nuly, ale při výpisu pořadí závodníků přičti +1.

  • Pro součet a průměr použij pomocné proměnné uvnitř vnořeného cyklu.

  • Každý řádek můžeš projít podle vysledky[i].length, aby řešení fungovalo i u „nerovnoměrné“ tabulky.

Řešení úlohy

Co je zde splněno

  • Data uložena do dvourozměrného pole vysledky (3 řádky, po 3 časech).

  • Tabulka vypsána po řádcích přes join(" ").

  • Průměr pro každého závodníka spočítán pomocí vnořených for cyklů a vysledky[i].length.

  • Do konzole vypsány průměrné časy ve správném formátu s pořadím závodníků (1, 2, 3).

Poznámky

  • Pokud by měl některý závodník jiný počet časů, výpočet stále funguje díky vysledky[i].length.

  • Chceš-li kulatit na 2 desetinná místa, můžeš při výpisu použít prumer.toFixed(2).