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
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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~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.