Zadání soutěžních úloh

Kategorie starší žáci

Soutěž dětí a mládeže v programování – 16. ročník krajské kolo 2001/2002


Úlohy můžete řešit v libovolném pořadí a samozřejmě je nemusíte vyřešit všechny. Za každou úlohu můžete dostat maximálně 10 bodů, z nichž 6 bodů je vyhrazeno na ohodnocení funkčnosti programu a jeho shody se zadáním, 3 body na efektivitu a jeden bod na dokumentaci a přehlednost zdrojového kódu. Body získané za každou úlohu se ještě násobí koeficientem, který odráží složitost úlohy.

Na řešení úloh máte 4 hodiny čistého času.

Dokonalá čísla – koeficient 1

Napište program, který nalezne všechna dokonalá čísla v intervalu 2 až 1000000. Dokonalé číslo je takové číslo, které je součtem všech svých dělitelů vyjma sama sebe. Tedy například 6 je dokonalé číslo, protože 1+2+3=6, podobně 1+2+4+7+14 = 28.

Součet CSV souboru – koeficient 2

CSV soubor je soubor obsahující tabulku. Co řádek tabulky, to řádek souboru. Jednotlivé položky na řádku jsou odděleny čárkami. Položky obsahující čárku musí být uzavřeny v uvozovkách, ostatní položky v uvozovkách být mohou, ale nemusí. Samotné položky uvozovky obsahovat nemohou. Jako oddělovač desetinných míst se používá tečka. Prázdné položky chápejte jako číselné s hodnotou 0. Pokud se ve sloupci alespoň jednou objeví nečíselná hodnota, celý sloupec je nečíselný.

Příklad souboru:

"Lopaty","5",125.50
"Krumpáče",10,"4340"
"Kladiva, násady",30,900

Vaším úkolem je navrhnout program, který sečte číselné sloupečky zadaného souboru. Tedy pro soubor z tohoto zadání program vypíše:

Sloupec 1: není číslo
Sloupec 2: 45
Sloupec 3: 5365.5

Předpokládejte maximální délku řádku 1024 znaků a nejvýše 100 položek na řádku.

Piškvorky – koeficient 1

Napište program, který vytvoří hrací plochu 20×20 pro hru piškvorky a umožní je hrát dvěma hráčům. Počítač bude kontrolovat průběh hry a sledovat zda nějaký hráč nevyhrál.

Vykreslení grafu – koeficient 2

Napište program, který vykreslí graf funkce k1*sin(k2*x). Konstanty k1, k2 a interval hodnot proměnné x bude zadám z klávesnice. Graf musí optimálně vyplnit plochu.

Karetní hra „Bitva“ – koeficient 2

Napište program na motivy karetní hry "Bitva". Program by měl simulovat následující funkce:

zadání údajů

Na začátku hry se zadají následující údaje: počet karet (32 nebo 64), počet hráčů (2–4), počet karet na začátku hry (5–10).

míchání karet

Míchání karet probíhá po dobu stisku klávesy mezerník. Míchání probíhá tak, že se balíček karet rozdělí na dvě části dle náhodného čísla z intervalu <1;počet karet>, a tento balíček se přeloží. Vše se opakuje dokud hráč neuvolní klávesu mezerník.

rozdání karet

Každý hráč dostane daný počet karet (balíčky by měly být vizuálně zobrazené na monitoru).

vykládání

Vykládání se děje buď v režimu krokování na klávesu Enter nebo automaticky po 2 sekundách. Vizuálně se zobrazí karty všech hráčů a určí se vítěz, v případě rovnosti nejvyšších karet v daném kole se vyloží další kolo (vykládají jen ti hráči, kteří předtím vyložili karty se stejnou hodnotou). Hráč, který již nemá kartu končí.

konec

Konec hry nastane v okamžiku, kdy zbude pouze jediný hráč.

Popis hry. Na začátku hry má každý hráč daný počet karet. Jedno kolo hry probíhá tak, že všichni hráči vezmou horní kartu ze svého balíčku a vyloží ji. Karty se musí brát pouze shora a jejich pořadí je dáno tím, jak karty hráč dostal. Z vyložených karet se vybere vítěz podle nejvyšší hodnoty vyložené karty (pořadí karet je 7, 8, 9, 10, spodek, svršek, král, eso). V případě rovnosti dvou karet vykládají odpovídající hráči znovu po jedné kartě. Vítězí ten, kdo má nejvyšší kartu. Vítěz získá všechny vyložené karty a ty se přidají dospod jeho balíčku karet v libovolném pořadí. Pokud hráč již nemá kartu na vykládání, končí.