Zadania Školského kola súťaže ZENIT v programovaní
v školskom roku 2005/2006 pre kategórie A, B

Všeobecné pokyny

Úlohu riešte v jazyku Pascal (dialekt Turbo Pascal v.7.0 alebo kompatibilný) alebo C (dialekt Turbo C++ v.3.0 alebo kompatibilný). Zdrojový text vášho riešenia uložte do súboru priezvisko.PAS resp. priezvisko.CPP (celé riešenie musí byť uložené v tomto súbore), ak robíte v  jazyku C/C++, vytvorte aj EXE súbor. Môžete použiť štandardné knižnice uvedených dialektov.

Váš program bude čítať vstupné údaje zo súboru TEST.IN a vypisovať riešenia na obrazovku počítača vo formáte presne stanovenom zadaním úlohy. Môžete predpokladať, že vstupné údaje zodpovedajú popisu v zadaní. Riešenie píšte bielou farbou na obrazovku v štandardnom textovom móde, pred začatím vlastnej činnosti programu nezabudnite zmazať obrazovku, nevypisujte na obrazovku žiadne iné informácie okrem tých, ktoré sú požadované zadaním.

Nemusíte riešiť všetky podúlohy zadania, každá časť je bodovaná samostatne. Programy, ktoré nemožno skompilovať alebo spustiť, nebudú hodnotené. Pri nejasnostiach sa riaďte ukážkou výstupu alebo testovacím programom. Ostré bodovanie prebehne na celkom iných vstupných súboroch. Pri určovaní postupujúcich do ďalšieho kola môžu zohrať rozhodujúcu úlohu prémiové body za kratší čas behu Vášho programu pri ostrých testoch.

 

Zadanie úlohy: Votrelec útočí na ZENIT.

 

Janko sa vrátil z kina. Silné zážitky ho nútia pracovať na základoch hry, ku ktorej ho inšpiroval film. Naprogramujte pre neho nasledovné úlohy:

 

0)      (10 bodov) Od pozície (2,2) napíše: 'Votrelci idu! ZENITaci pozor si dajte!'.

 

a) (25+10+8+12 bodov) Do Vášho PC sa dostal Votrelec A. Na monitore sa zobrazuje   znakom 'A'. Votrelca riadia povelmi:

         W - krok hore o jedno políčko

         S - krok dole o jedno políčko

         A - krok doľava o jedno políčko

         D - krok doprava o jedno políčko

       1..9 - vypustenie krycej clony tvaru podľa ukážky

         0 - stoj na mieste

Môže sa stať, že Vám Votrelec zmizne z obrazovky ( ak jeho suradnica x  < 1 alebo x > 80 alebo y<1 alebo y>25). Prečítajte počiatočné súradnice x,y Votrelca A a reťazec PA povelov na jeho riadenie zo vstupného súboru SKOLA.IN. Simulujte pohyb votrelca A na obrazovke. Na všetkých políčkach ostane po votrelcovi stopa: znak '.' alebo krycia clona. Od pozície (2,4) vypíšte jeho konečnú polohu. Od (2,5) napíšte počet krokov. Od (2,6) jeho najmenšiu vzdialenosť od stredu (40.5;13) obrazovky  (počas celého pohybu). Môžete predpokladať, že votrelec sa bude pohybovať iba v pravej polovičke obrazovky.

 

b) (5+5 bodov) Janko mal výborné vysvedčenie - neprepadol(?). Jedna z odmien bolo filmové   predstavenie Votrelec. Naozaj si zalúžil takú odmenu? Prečítajte zo   vstupného suboru jeho vysvedčenie. Najskôr počet známok a potom jednotlivé známky. Známky, ktore dostal vypíšte od pozície (2,8). Vypočítajte jeho priemernú známku a vypíšte od pozície (2,9) s presnosťou na 2 des.miesta.

 

c) (5 bodov) Koľko si Janko zarobil, keď za každú jenotku dostal 100Sk  a za každú trojku musel vrátiť 50Sk, za štvorku 100Sk a v pripade pätorky nedostal vôbec nič. Výsledný 'zárobok' vypíšte od pozície (2,10). POZOR!: ak chcem vypisat apostrof ' v textovom reťazci musím použiť dva apostrofy '' alebo funkciu CHR(39).

 

d) (3+3 body) Aká je na vysvedčení najlepšia a aká najhoršia známka? Vypíšte ich od pozície (2,11-12).

 

e) (2+2+2+2+2 body) Jankova mamička je veľmi hrdá na známky svojho syna. Doma má zapísané ešte aj počty včeličiek a prasiatok, ktoré doniesol Janko zo školy ako prváčik. Počet 1,2,3,4,5  vypíšte od pozície (2,13-17).

 

f) (9 bodov) Podľa vzoru NHL Janko sleduje svoju úspešnosť v získavaní  jednotiek. Vypište percentuálny podiel Jankových jednotiek od pozície (2,18) na dve des. miesta.

 

g) (10+10 bodov) Zo všetkých svojich učiteľov, Janko najviac obdivuje matikára 'uja Fera'. Dával im príklady na vetu Pytagorovu a vždy vychádzalo pre preponu alebo odvesnu pekné celé číslo. Prečítajte odvesny A,B pravouhlého 3uholníka a vypočítajte preponu C. Prečítajte preponu C a odvesnu A iného pravuhlého 3uholníka a vypočítajte odvesnu B. Výsledky píšte od pozície (2,20-21).

 

h) (12 bodov) Jankovi iba vtedy nevyšlo celé číslo, keď bol nasledujúci príklad: Určite či 3uholník so stranami A,B,C je pravoúhly, ostro alebo tupoúhly. Prečítajte strany A,B,C a vypíšte o aký druh 3uholníka ide. Výsledok píšte od pozície (2,22).

 

i) (18 bodov) Ba čo viac, skoro ku každej prepone C ujo Fero nájde celočíselne odvesny  A<B aby 3uholík A,B,C bol pravoúhly. Prečítajte preponu C a k nej nájdite odvesny A<B. Výsledok vypíšte od pozície (2,18). Môžete predpokladať, že C je prvočíslo a že existuje

práve jeden takýto pravoúhly pytagorejský 3uholník. Výpis od pozície (2,23).

 

         Dôležité poznámky:

 

Krycia clona: je štvorec, v strede je písmeno ‘A’ okolo neho zväčšujúce štvorce z číslic. Napr:

                     00000

                     01110

                     01A10

                     01110

                     00000

 

Výpis percenta na dve des. miesta:  write(p:0:2)  2 je počet des. miest, 0 znamená výpis bez medzery.

 

Votrelec : - ak vypíšem niečo na pozíciu (80,25) obrazovky nastane automatické rolovanie obrazovky o jeden riadok. Pomoc: použite procedúru InsLine alebo nevypisujte (stratíte 25 bodov) alebo vypisujte všade okrem (80,25) (stratíte 10 bodov) alebo ...

 

Kúzlo uja Fera : -    zoberiem u>v dve cele čísla

-         vypočítam A = 2uv

-         vypočítam B = u^2 - v^2

-         vypočítam C = u^2 + v^2

-         mám pravoúhly 3uholník A,B,C

 

 

 

 

 

Vstupny subor: SKOLA.IN

56 7                            x,y na obrazovke

AAAAAAA3WW                      povely Votrelca

10 1 1 1 1 2 2 2 2 3 1          Jankove známky

3 4                             A B < 1000000

10 6                            C A < 1000000

20 21 27                        A B C < 1000000

37                         prvočíslo  C < 1000000

 

 

 

Obrazovka testu: 1

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~Votrelci~idu!~ZENITaci~pozor~si~dajte!~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~Votrelec:~(49;5)~~~~~~~~~~~~~~~~~~~~~~~~~~~~0000000~~~~~~~~

~Kroky:~9~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~011A110~~~~~~~~

~Vzdialenost:~10.40~~~~~~~~~~~~~~~~~~~~~~~~~~012.210~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~012.210....~~~~

~Znamky:~1~1~1~1~2~2~2~2~3~1~~~~~~~~~~~~~~~~~0122210~~~~~~~~

~Priemer:~1.60~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~0111110~~~~~~~~

~'zarobok':~450~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~0000000~~~~~~~~

~Najlepsia:~1~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~Najhorsia:~3~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~Jednotky:~5~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~Dvojky:~~~4~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~Trojky:~~~1~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~Stvorky:~~0~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~Patorky:~~0~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~Perc.~1:~50.00~%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~A:~3~B:~4~C:~5~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~A:~6~B:~8~C:~10~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~A:~20~B:~21~C:~27~ostruhly~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~A:~12~B:~35~C:~37~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

( výpis je iba na šírku 60, medzery su vypisované ako '~' )

 

Ukážka toho, čo by mal obsahovať Váš program:

uses uSKOLA, crt;

var N,i,x,y : longint;

    PA : string;

    z : array[1..15] of integer;

begin

  clrscr;

  assign( input, 'SKOLA.in' );  reset( input );

  readln(x,y);

  readln(PA);

  read( N );

  for i := 1 to N do read(z[i]);

  .....       ... Tvoj program - čítanie dalších dát

                  a Tvoje výpočty

end.