Zadání úloh oblastního kola
Soutěže dětí a mládeže v programování 1998

Následující úlohy můžete řešit v libovolném pořadí. Body získané za každou úlohu se násobí koeficientem, který je u každé úlohy uveden a vyjadřuje její obtížnost. Za jednu úlohu můžete získat maximálně 10 bodů (před násobením koeficentem); z toho je 6 bodů určeno na ohodnocení funkčnosti, 3 body na efektivitu řešení a zbývající jeden bod slouží k ohodnocení dokumentace a přehlednosti odevzadaného zdrojového textu programu. Na řešení úloh máte 4 hodiny čistého času.

Vyšší programovací jazyky mládež a starší žáci

Úloha 1

Napište program počítající počet dnů mezi dvěma zadanými datumy - tedy kolik dnů uplyne od poledne prvního dne do poledne druhého dne. Datumy budou zadány ve formátu den.mesic.rok, měsíc bude zadán číselně, rok čtyřciferně. Omezte se na datumy od 1.1.1950 do 31.12.2049.
Např. mezi 1.1.98 a 3.1.98 je rozdíl 2 dny.

Koef.: 1

Úloha 2 žáci

Jakou křivku opíše bod na stěně kutálejícího se kotouče? Po vodorovné ose se valí kotouč o poloměru 25. Pohyb začne u levého okraje obrazovky (okna) - střed kotouče se dotýká okraje. Bod pevně umístěný na kotouči leží na počátku pohybu na svislici procházející středem kotouče, pod jeho středem ve vzdálenosti x (načtěte, 0<=x<=100).
Vykreslete křivku,kterou opíše tento bod při pohybu kotouče směrem doprava. Samotný kotouč nevykreslujte, postačí jen vykresení zkoumané křivky, vodorovné osy a osy, po které se pohybuje střed kotouče.

Koef.: 2,5

Úloha 2 mládež

Jakou křivku opíše bod na stěně kutálejícího se kotouče ? Po vodorovné ose se valí kotouč o poloměru 25. Pohyb začne u levého okraje obrazovky (okna) - střed kotouče se dotýká okraje. Bod pevně umístěný na kotouči leží na počátku pohybu na svislici procházející středem kotouče, pod jeho středem ve vzdálenosti x (načtěte, 0<=x<=100).
Vykreslete křivku,kterou opíše tento bod při pohybu kotouče směrem doprava. Vykreslování doplňte animací kotouče, během animace zobrazujte také spojnici středu kotouče a zkoumaného bodu.

Koef.: 2,5

Úloha 3

Napište program, který pro zadané přirozené číslo n (n=1..2 000 000 000) zjistí, kolik nul bude na konci čísla n!, zapsaného v desítkové soustavě.
Pro funkci faktorial platí: n!=1*2*3* ... *(n-1)*n

Koef.: 1,5

Úloha 4

Vypracujte program pro zomm černobílého výkresu uloženého v souboru tvaru BMP. Při změně velikosti je nutno zachovávat sílu čar.

Koef.: 2,5

Úloha 5 žáci

Napište program, kterému se zadá adresářová cesta (C:\TP), a program spočítá velikost všech souborů v daném adresáři a jeho podadresářích. Vypište také počet prozkoumaných podadresářů a souborů. Umožněte načtení cesty z příkazové řádky.

Koef.: 1,5

Úloha 5 mládež

Vytvořte program zjišťující, zda se v adresářové struktuře vyskytují dva stejné soubory. Stejné ne podle názvu, ale stejné svým obsahem. Parametrem programu bude cesta (respektive adresář), jehož podadresáře mají být prozkoumány.

Mějme například takovýto adresářový strom:

                                 délka
data --|-cecko  - prg1.c           1245
       |        \ prg2.c           2304
       \-pascal - prg1.c          14567
                \ prg2.bak         2304

Parametrem bude adresář data. Program tedy prohledá celý tento adresář včetně
všech jeho podadresářů a vypíše:

Shoda1:
data\cecko\prg2.c
data\pascal\prg2.bak

Soubory prg1.c program nevypíše, protože se shodují názvem (to nás nezajímá), ale soubory prg2.c a prg2.bak se shodují nejen délkou, ale předpokládejme i obsahem. Proto je program vypíše. Umožněte rozvněž zápis výsledků do souboru. (např. jako poslední nepovinný parametr příkazové řádky).

Koef.: 3

Vizuální nástroje

Základní zadání

Vytvořte program - hru napodobující práci Řízení letového provozu.
1/ Zobrazte hrací plán 100x100 km, který obsahuje uprostřed jednu přistávací plochu směr Sever-Jih.
2/ Vytvořte 4 objekty (letadla), zobrazené šipkou s číslem letu, které přilétají z každé světové strany.
3/ Úkolem hráče je navést všechna letadla na přistání bez vzájemné kolize.
4/ Rychlost letadel je 150 - 1000 km/h.
5/ Letová hladina se udává ve stovkách metrů a je v rozsahu 1000 - 10000 m.
6/ Počáteční parametry jsou nastavitelné, směr letu je zpočátku přibližně do středu (nikdy ne přesně).
7/ Hráč vydává příkazy pilotům letadel (letadlo vybírá myší), zadává nové konečné hodnoty:
a/ změna rychlosti
b/ změna letové hladiny
c/ změna směru letu
d/ příkaz ke kroužení
e/ povolení k přistání
8/ Parametry letadel:
a/ zrychlení (zpomalení):10%/s
b/ klesání: 20m/s
c/ stoupání: 10m/s
d/ změna směru: 15stupňů/s
9/ Hráč musí mít možnost zobrazit okamžité parametry jednotlivých letadel.
10/ Příkaz k přistání lze zadat pouze po dosažení nejnižší rychlosti a nejnižší letové hladiny, minimálně 5km před letištěm ve správném směru (povolená odchylka 5 stupňů).
11/ Kolize je vzájemné přiblížení letadel na vzdálenost menší než 2 km, při stejné letové hladině.
12/ Program zobrazuje průběžný čas od spuštění hry.

Hodnotí se praktičnost ovládání z hlediska hráče.

Rozšiřující úkoly

1/ Automatické generování dalších letadel.
2/ Více přistávacích drah.
3/ Kontrola množství paliva, rychlost určuje spotřebu.
4/ Startující letadla, musí odletět určeným směrem a v určené letové hladině.
5/ Průlet letadel (letadlo nepřistává, ani nestartuje na našem letišti).