Alternativy seminářového úkolu 6

Website: Moodle ZČU
Kurs: Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný)
Buch: Alternativy seminářového úkolu 6
Gedruckt von: Gast
Datum: Sonntag, 18. Oktober 2026, 05:58

Zadání 1 – Rozdělení do týmů

Zadání

Zadej seznam jmen (každé na nový řádek) a počet týmů. Po kliknutí na Rozdělit se jména náhodně promíchají a rovnoměrně rozdělí do týmů bez duplicit. Tlačítkem Zamíchat znovu se provede nové náhodné rozdělení nad stejnými jmény. Reset vymaže výstup a odemkne vstupy.


Cíl úlohy
  • Události onclick, práce s DOM (textContent, innerHTML, disabled, readOnly).

  • Práce s poli: čištění vstupu, míchání (Fisher–Yates), rozdělení do „košíků“.

  • Validace: prázdná jména, minimální počty, počet týmů v rozumném rozsahu.

  • Kontrola duplicit jmen (citlivost jen na text – „Anna“ a „anna“ je bráno jako různé pro zjednodušení).


Vstupní podmínky
  • Základní HTML kostra.

  • Soubory: index.html, style.css, main.js.


Požadovaný výstup
  • textarea se jmény, input[type=number] pro počet týmů.

  • Tlačítka: Rozdělit, Zamíchat znovu, Reset.

  • Vygenerované seznamy týmů s počítadlem členů.

  • Krátké komentáře v JS (česky).


Doplňující pokyny
  • Sémantické prvky main, section, h1, fieldset, legend, ul, li.

  • Jednoduché třídy/ID, čisté odsazení.

  • Nepoužívej šipkové funkce ani ternární operátory. Podmínky piš explicitně (if (stav == true)).

Rozdělení do týmů

Vstup

Výstup

Řešení úlohy 1 – Rozdělení do týmů

Co je zde splněno

  • Klikací události, validace vstupu, práce s poli a náhodné míchání (stejné „stavebnice“ jako loterie).

  • Kontrola rozumných hranic a srozumitelné hlášky.

  • Vykreslení výstupu do DOM, počty členů v týmech.

  • Možnost znovu náhodně promíchat beze změny vstupu.

Poznámky

  • Pokud chceš kontrolovat skutečné duplicity jmen (bez ohledu na velká/malá písmena), můžeš před mícháním převést toLowerCase() a zkontrolovat výskyty v pomocném poli.

Zadání 2 – Rozpis zápasů

Zadání

Zadej seznam týmů (každý na nový řádek). Kliknutím na Vygenerovat rozpis se týmy náhodně promíchají a vytvoří se rozpis „každý s každým“ podle kol. U každého zápasu lze zapsat výsledek (góly/domů vs. venku) tlačítkem Uložit – tím se okamžitě aktualizuje tabulka (body, výhry, remízy, prohry, skóre). Tlačítkem Nový seed (promíchat) se rozpis přegeneruje se stejnými týmy, Reset vše smaže.


Cíl úlohy
  • Události onclick, práce s DOM (innerHTML, textContent, atributy).

  • Práce s poli: čištění vstupu, Fisher–Yates míchání, kruhová metoda rozpisu.

  • Validace: minimální počet týmů, detekce duplicit, prázdné řádky.

  • Základní „datový model“: uložení zápasů, ukládání a přepis výsledků, přepočet tabulky.


Vstupní podmínky
  • Základní HTML kostra.

  • Soubory: index.html, style.css, main.js.


Požadovaný výstup
  • textarea pro týmy, tlačítka Vygenerovat rozpis, Nový seed, Reset.

  • Vykreslená kola se zápasy; u každého zápasu dvě input type="number" a tlačítko Uložit.

  • Průběžná tabulka: Tým, Z, V, R, P, G+, G−, +/- , Body.

  • Povinné české komentáře v JS. Žádné šipkové funkce, ternární operátory ani var.


Doplňující pokyny
  • Použij main, section, h1, fieldset, legend, table, thead, tbody.

  • Jednoduché názvy proměnných a tříd, čisté odsazení.

  • Pokud je počet týmů lichý, přidej „Volno“ (zápasy s „Volno“ se nehrají a nezapisují).

Rozpis zápasů – každý s každým

Vstup

Rozpis

Tabulka

Tým Z V R P G+ G− +/- Body

Řešení úlohy 2 – Rozpis zápasů

Co je zde splněno

  • Stejné technické mechaniky: klikací tlačítka, validace vstupu, práce s poli, náhodné míchání, bez duplicit, podmínky if, změny v DOM.

  • Jiný cíl: místo losování čísel se plánuje turnaj a zapisují výsledky.

  • Kruhová metoda vytváří férový rozpis, „Volno“ řeší lichý počet týmů.

  • Zápasy ukládají výsledky, přepis výsledku korektně odečte starý stav a přičte nový.

  • Tabulka průběžně počítá Z, V, R, P, G+, G−, +/- , Body a jednoduchým způsobem seřazuje.

Poznámky

  • Řazení tabulky je záměrně napsané „ručně“, aby bylo pro začátečníky čitelné; v praxi by se použilo Array.prototype.sort s porovnávací funkcí.

  • Pokud nechceš, aby se střídalo pořadí domácí/venkovní, můžeš zrušit podmínku if (i % 2 === 1) v generování kol.