Oblastní kolo soutěže v programování (1999)

Kategorie vyšší programovací jazyky - mládež

Pátky třináctého

Koeficient: 1

Vaším úkolem je vytvořit program, který vypíše na obrazovku všechny pátky třináctého od 1. 1. 1990 do 31. 12. 2020 -- poradíme vám, že 1. 1. 1990 bylo pondělí. V programu nesmíte používat systémové funkce pro práci s datem.

Počítání slov

Koeficient: 3

Napište program, který slouží k počítání slov v zadaném textovém souboru. Slovo je to, co se skládá z písmen anglické abecedy, číslic a podtržítka. Všechny ostatní znaky (i nová řádka) jsou chápány jako oddělovače. Mezi slovy může být libovolný počet oddělovačů. Uživatel si může vybrat mezi jedním z následujících způsobů výstupu:

  1. Program spočítá počet slov v souboru, počet znaků v souboru a počet řádek (i prázdný řádek je řádek). Na konci přehledně vypište všechny tři získané hodnoty.
  2. Program spočítá pro každé slovo četnost jeho výskytu v souboru a na konci vypíše abecedně setříděný seznam slov a počtu jejich výskytů.
  3. Program uživateli umožní vybrat, zda se má seznam slov při výpisu b) řadit podle abecedy nebo podle počtu výskytů jednotlivých slov.

Interpret grafického jazyka

Koeficient: 2

Napište program, který bude provádět jednoduché grafické příkazy. Na vstupu bude textový soubor, který obsahuje seznam příkazů a jejich parametrů. Na každém řádku bude pouze jeden příkaz. Souřadnicový systém grafického jazyka je následující: rozsah obou os od 0 do 1, napřed se zadává souřadnice x (vzdálenost od levého okraje), pak souřadnice y (vzdálenost od dolního okraje). Využijte celou plochu obrazovky, pouze v dolní části si nechte místo na jeden řádek textu -- stavovou řádku.

Možné příkazy jsou:

LINE X1 Y1 X2 Y2
vykreslí čáru z bodu [X1,Y1] do [X2,Y2]
POINT X Y
vykreslí bod na souřadnicích [X,Y]
BOX X1 Y1 X2 Y2
vykreslí prázdný rámeček z bodu [X1,Y1] do [X2,Y2]
FILLBOX X1 Y1 X2 Y2
vykreslí vyplněný rámeček z bodu [X1,Y1] do [X2,Y2]
COLOR C
nastaví barvu kreslení; čísla barev jsou shodná s barvami používanými v grafické knihovně BGI v Pascalu či C/C++
PAUSE
počká na stisk klávesy; o tom, že čeká informuje uživatele výpisem ve stavové řádce
CLEAR
smaže obrazovku (celou ji překreslí černě)

Příkazy je možné psát malými i velkými písmeny. Příkazy a parametry jsou od sebe odděleny libovolným počtem mezer. Vše se kreslí (i vyplňuje) právě nastavenou barvou (určenou příkazem COLOR). Po startu programu je nastavena bílá barva. V případě chyby vypište do stavové řádky informace o chybě (číslo řádky a chybný příkaz), počkejte na stisk klávesy a ukončete běh programu. V grafickém programu se mohou vyskytovat prázdné řádky a komentářové řádky (začínají znakem '%' nebo ';'), které se ignorují. Umožněte zadání názvu vstupního souboru jako parametru příkazové řádky.

Ukázkový program:

% Toto je ukázkový program

% úhlopříčka
LINE 0 0 1 1

% nakreslíme zelené obdélníky
COLOR 2
FILLBOX 0 1 0.5 0.5
FILLBOX 0.5 0.5 1 0
PAUSE

% obdélníky orámujeme žlutě
COLOR 14
BOX   0   1 0.5 0.5
BOX 0.5 0.5   1   0
PAUSE

Tento program nakreslí bíle úhlopříčku, pak vykreslí dva zelené obdélníky přes čtvrtinu plochy obrazovky (vlevo nahoře a vpravo dole), počká na stisk klávesy, obdélníky orámuje žlutě, počká znovu na stisk klávesy a skončí.

Násobení velkých čísel

Koeficient: 1,5

Napište program, který přesně vynásobí maximálně stociferná čísla.


Kategorie vyšší programovací jazyky -  starší žáci

Pátky třináctého

Koeficient: 1,5

Vaším úkolem je vytvořit program, který vypíše na obrazovku všechny pátky třináctého od 1. 1. 1990 do 31. 12. 2020 -- poradíme vám, že 1. 1. 1990 bylo pondělí. V programu nesmíte používat systémové funkce pro práci s datem.

Počítání slov

Koeficient: 2

Napište program, který slouží k počítání slov v zadaném textovém souboru. Slovo je to, co se skládá z písmen anglické abecedy, číslic a podtržítka. Všechny ostatní znaky (i nová řádka) jsou chápány jako oddělovače. Mezi slovy může být libovolný počet oddělovačů. Program spočítá počet slov v souboru, počet znaků v souboru a počet řádek (i prázdný řádek je řádek). Na konci přehledně vypište všechny tři získané hodnoty.

Interpret grafického jazyka

Koeficient: 3

Napište program, který bude provádět jednoduché grafické příkazy. Na vstupu bude textový soubor, který obsahuje seznam příkazů a jejich parametrů. Na každém řádku bude pouze jeden příkaz. Souřadnicový systém grafického jazyka je následující: rozsah obou os od 0 do 1, napřed se zadává souřadnice x (vzdálenost od levého okraje), pak souřadnice y (vzdálenost od dolního okraje). Využijte celou plochu obrazovky, pouze v dolní části si nechte místo na jeden řádek textu -- stavovou řádku.

Možné příkazy jsou:

LINE X1 Y1 X2 Y2
vykreslí čáru z bodu [X1,Y1] do [X2,Y2]
POINT X Y
vykreslí bod na souřadnicích [X,Y]
BOX X1 Y1 X2 Y2
vykreslí prázdný rámeček z bodu [X1,Y1] do [X2,Y2]
FILLBOX X1 Y1 X2 Y2
vykreslí vyplněný rámeček z bodu [X1,Y1] do [X2,Y2]
COLOR C
nastaví barvu kreslení; čísla barev jsou shodná s barvami používanými v grafické knihovně BGI v Pascalu či C/C++
PAUSE
počká na stisk klávesy; o tom, že čeká informuje uživatele výpisem ve stavové řádce
CLEAR
smaže obrazovku (celou ji překreslí černě)

Příkazy je možné psát malými i velkými písmeny. Příkazy a parametry jsou od sebe odděleny libovolným počtem mezer. Vše se kreslí (i vyplňuje) právě nastavenou barvou (určenou příkazem COLOR). Po startu programu je nastavena bílá barva. V případě chyby vypište do stavové řádky informace o chybě (číslo řádky a chybný příkaz), počkejte na stisk klávesy a ukončete běh programu. V grafickém programu se mohou vyskytovat prázdné řádky a komentářové řádky (začínají znakem '%' nebo ';'), které se ignorují. Umožněte zadání názvu vstupního souboru jako parametr příkazové řádky.

Ukázkový program:

% Toto je ukázkový program

% úhlopříčka
LINE 0 0 1 1

% nakreslíme zelené obdélníky
COLOR 2
FILLBOX 0 1 0.5 0.5
FILLBOX 0.5 0.5 1 0
PAUSE

% obdélníky orámujeme žlutě
COLOR 14
BOX   0   1 0.5 0.5
BOX 0.5 0.5   1   0
PAUSE

Tento program nakreslí bíle úhlopříčku, pak vykreslí dva zelené obdélníky přes čtvrtinu plochy obrazovky (vlevo nahoře a vpravo dole), počká na stisk klávesy, obdélníky orámuje žlutě, počká znovu na stisk klávesy a skončí.

Odpočítávání

Koeficient: 1

Napište program, který průběžně zobrazuje kolik dní, hodin, minut a sekund zbývá do začátku roku 2000.

Kategorie vizuální nástroje

Dáma

Vytvořte program pro hraní stolní deskové hry Dáma, která se hraje podle následujících pravidel.

Hraje se na klasické šachovnici (8 x 8 polí). Kameny se pohybují pouze po černých polích a pouze ve směru od hráče (to neplatí pro dámu). Má-li hráč možnost vzít soupeři kámen, musí tak učinit (platí i pro vícenásobné braní) a to i dámou. Vyhrává hráč, který soupeři vzal všechny hrací kameny.

Vaším úkolem je zobrazit hrací pole (šachovnici) a hrací kameny. Program umožní hrát dámu dvěma hráčům. Výběr kamene a tah může hráč provést myší nebo klávesnicí. Program umožní odebrání kamenů po skoku a vytvoření dámy při dosažení protějšího konce šachovnice hracím kamenem.

Doplňte program tak, aby bylo možné zapnout kontrolu správnosti tahu kamenem.

Po splnění předchozího úkolu doplňte program tak, aby uměl simulovat jednoho hráče.