Zadania Školského kola súťaže ZENIT v programovaní
v školskom roku 2006/2007 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. Do zdrojového textu vložte komentár, kde uvediete svoje meno, triedu a školu.

Váš program bude čítať vstupné údaje zo súboru VSTUP.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: kpt. Ujo Fero sa vrátil z Iraku.

 

   Hneď po voľbách, keď našich vojakov odvolali z Iraku,  kpt. ujo Fero išiel do predčasného dôchodku ako vojak, a z pasie ( lebo, kto si už môže dovoliť učiť za učiteľský plat? ) ako učiteľ matematiky nastúpil na školu. Prvou jeho úlohou bolo vymyslieť a vyhodnotiť testy z matematiky na prijímacie skúšky. Škola to bola dobrá, prihlásených žiakov veľa, úlohy sú preto náročné. Skúste si svoje sily:

   Napíšte program ( a uložte ho pod svojím menom ), ktorý vyrieši nasledovné problémy:

 

0)(10 bodov) Od pozície (2,2) vypíše text: 'Kpt. ujo Fero je tu!'.

 

a)(3+5 bodov) Koľko poschodí majú paneláky, kde bývajú Kubko a Maťko? Kubko býva na treťom poschodí a preto, keď sa vezie výťahom, stlačí 3. gombík od vrchu. Teraz už viete vypočítať, koľko poschodí má Kubkov panelák. Výsledok vypíšte na pozíciu (2,4). Maťko býva na vyššom K-tom poschodí v podobnom paneláku a aby sa výťahom dostal domov stlačí, K-tý gombík od vrchu. Prečítajte zo vstupného súboru VSTUP.in hodnotu K a výšku Maťkovho paneláku vypíšte na pozíciu (2,5).

 

b)(9 bodov) Je veľmi dôležité, aby žiak rozoznal prázdne reči v STV alebo v dennej tlači, alebo aj na slávnostnej manifestácii. Mal by vedieť, že IÁIÁ IÁIÁ (híkanie osla) znamená nezmysel. Prečítajte zo vstupu číslo N a vypíšte prvých päť štvormiestnych čísiel väčších ako N typu IÁIÁ od pozície (2,7).

 

c)(6+5+8 bodov) V geometrii je 3uholník jedným z najjednoduchších útvarov. Prečítajte kladné celé čísla A,B,C a vypíšte na pozíciu (2,9), či sa dá zostrojiť 3uholník so stranami týchto dĺžok. Na pozíciu (2,10) vypíšte obvod, a na pozíciu (2,11) plochu tohto 3uholníka.

 

d)(15 bodov) Nájdite také číslo X, aby A+X, B+X, C+X boli štvorce ( druhé mocniny) celých kladných čísiel c1, c2, c3 tak, aby ich rozdiely boli rovnaké: c2-c1 = c3-c2. Výsledky vypíšte od pozície (2,12).

 

e)(10 bodov) Problém deravej strechy školy rieši ujo Fero (kpt. vo výslužbe) metódou 'záplata na záplate'  t.j. nechá urobiť obdĺžnikové záplaty a tieto prekryje ďalšími, väčšími obdĺžnikovými záplatami, ktoré úplne prekryjú predošlé (Ujo hovorí: Teším sa - drží to dupľom! ). Riešte teda pre neho veľmi náročnú úlohu: prečítajte M. Z množiny  Q = (1, 2, 3, ..., M) vyberte postupne štyri rôzne čísla a, b, c, d všetkými možnými spôsobmi. Koľko z nich je takých, že obdĺžniková záplata  a,b sa dá prekryť obdĺžnikovou záplatou c,d? (pre zjednodušenie predpokladajme, že strany obdĺžnikov budú rovnobežné). Výsledok vypíšte od pozície (2,14).

 

   Po teste treba spracovať výsledky. Vo vstupnom súbore nasledujú čísla P .. počet žiakov  a Z .. počet známok z posledného vysvedčenia. Ďalej nasleduje P riadkov: jeden riadok pre každého žiaka.

   Riadok obsahuje:

    Body              ...z testu uja Ferra / celé číslo

    Z[1]..Z[z]       ...známky posledného vysvedčenia 

    krstné meno

    priezvisko     ...  kratšie ako 16 znakov

všetky údaje sú oddelené jednou medzerou. Čítajte tieto údaje zo vstupného súboru a riešte ďalšie úlohy:

 

f)(6+12+6+9 bodov) Dvoch žiakov s najväčším bodovým ziskom z testu vypíšte od pozície (38,11). Ak je ich viac s rovnakým ziskom, vypíšte ich podľa abecedy (najviac ale 7 ). Na pozíciu (2,16) vypíšte priemer bodov. Na pozíciu (2,17) vypíšte počet žiakov, ktorých test je horší ako priemer.

 

g)(8+14 bodov) Nájdite najlepší priemer známok z vysvedčení a vypíšte od pozície (38,1). Ak ich je viac s rovnakým priemerom, tak vypíšte všetkých podľa abecedy  (ale najviac 7).

                                      

h)(8+8 bodov) Vieme, že z telocviku mali žiaci najlepší priemer a z matematiky najhorší. Zistite, ktoré sú to známky a vypíšte od pozície (2,19-20).

 

i)(9+3 body) Od pozície (2,21) vypíšte, koľko žiakov malo priemer známok z vysvedčenia lepší ako 2.00 spolu s percentuálnym vyjadrením.

 

j)(10+3 body) Od pozície (2,22) vypíšte, koľko dievčat sa prihlásilo na školu spolu s percentuálnym vyjadrením. ( pre zjednodušenie môžete predpokladať, že každé dievča má koncovku priezviska 'ova' - aspoň pre naše testovanie).

 

k)(12 bodov) Od pozície (2,24) vypíšte, ktoré krstné mená sa vyskytujú najčastejšie. (Ak ich je viac, tak všetky a utriedené podľa abecedy).

 

         Dôležité poznámky:

 

Plocha 3uholníka, ak sú dané jeho strany a,b,c sa počíta podľa Heronovho vzorca:

 

     P = odmocnina( s(s-a)(s-b)(s-c) )    ..kde  s = (a+b+c)/2

 

 

 

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

uses uTEST, crt;

var K, N, A, B, C, M, P, Z, i,j : longint;

begin

  clrscr;

  gotoxy(2,2);  write( 'Kpt. ujo ..');

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

  read(K,N,A,B,C,M,P,Z);

  gotoxy(2,4); write('Kubkov ...');

  .....       ... Tvoj program - citanie dalsich dat

  a Tvoje vypocty

end.

 

 

 

Vstupný súbor 1: VSTUP.IN

5 2220   35 24 15   K < 10  N < 9999   A,B,C < 100000

5                   M < 100

6 5                 P < 100  Z < 10

60 1 1 2 1 1 Jan Rafaj         Body < 100

50 1 2 2 1 2 Fero Rataj

55 1 1 1 1 2 Fero Urban

60 2 3 1 1 2 Jana Haluskova

65 2 3 2 1 1 Jana Hlavacova

60 2 2 1 1 1 Jan Sova

 

 

 

Obrazovka testu: 1

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Najlepsi~priemer:~1.20~

~Kpt.~ujo~Fero~je~tu!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Rafaj~Jan~~~~~~~~~~~~~~

~Kubkov~panelak~ma~5~poschodi.~~~~~~~Urban~Fero~~~~~~~~~~~~~

~Matkov~panelak~ma~9~poschodi.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

~IAIA:~2323~2424~2525~2626~2727~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

~3u:~A=35~~B=24~~C=15~sa~da.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~Obvod:~~74~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~Plocha:~145.5~~~~~~~~~~~~~~~~~~~~~~~Najviac~bodov:~~~~~~~~~

~35+1=6^2~~24+1=5^2~~15+1=4^2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~65~Hlavacova~Jana~~~~~~

~Zaplaty~pre~{1,2,..,5}:~40~~~~~~~~~~60~Haluskova~Jana~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~60~Rafaj~Jan~~~~~~~~~~~

~Priemer:~58.33~bodov.~~~~~~~~~~~~~~~60~Sova~Jan~~~~~~~~~~~~

~Horsi~ako~priemer:~2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

~TV~znamka~c.:~4~priemer:~~1.00~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~M~~znamka~c.:~2~priemer:~~2.00~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~Priemer~<~2.00:~6~~100.00~%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~Pocet~dievcat:~2~~33.33~%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

~Najcastejsie~2~krat:~Fero~Jan~Jana~~~~~~~~~~~~~~~~~~~~~~~~~

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

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