mff/12.6.2000/i      

Variant A

Prijímacie pohovory z informatiky

 

 

1.       Daná časť programu pracuje s n-prvkovým celočíselnom poľom a čísel z množiny {1,2,3,4,5}:

  k:=0; s:=0; m:=0;

  for i:=1 to n do

    begin

      s:=s+a[i]; k:=k+1;

      while s>10 do

        begin k:=k-1; s:=s-a[i-k] end;

      if s=10 then

        if k>m then m:=k;

    end;

  writeln(m);

a)       Zistite, čo vypíše tento program, ak n=20 a pole a má hodnoty:

      3 3 5 1 1 3 4 3 3 1 2 1 3 1 4 5 2 5 5 3

b)       Navrhnite 10-prvkové pole (čísel z množiny {1,2,3,4,5}) také, aby program vypísal číslo 7.

 

2.       V múzeu výpočtovej techniky sme objavili historickú celočíselnú kalkulačku, ktorá až na dve tlačidlá vôbec nefun­gu­je. Jedno tlačidlo má označenie [*3] a po jeho zatlačení sa číslo na dipleji vynásobí 3. Druhé tlačidlo [‑1] zníži číslo na displeji o 1, ale iba ak je väčšie ako 1.

a)       Na začiatku je na displeji číslo 1. Ako dosiahneme na čo najmenší počet stlačení číslo 100?

b)       Na začiatku je na displeji číslo 1. Koľko rôznych výsledkov sa dá dosiahnuť na displeji, ak päťkrát postupne stlačíme nejaké z tlačidiel [*3] alebo [-1] (do úvahy berieme len čísla, ktoré sa dosiahli po piatom stlačení tlačidla)?

 

3.       V poznámkach jedného programátora sa našiel úryvok programu v zabudnutom programovacom jazyku A--. Podarilo sa nám rozlúštiť tieto pravidlá jazyka - všetky inštrukcie sa skladajú z troch častí:

·         kódu operácie (= priradenie,+,-,*,/ celočíselné delenie,% zvyšok po celočíselnom delení,<> test na nulu);

·         premennej, s ktorou sa vykoná operácia;

·         parametra (číslo alebo premenná), resp. pre reláciu <> je posledným parametrom návestie skoku.

Niektoré inštrukcie navyše začínajú návestím na skok - číslo, za ktorým je dvojbodka (označuje miesto v programe, na ktoré bude možné skočiť inštrukciou testu na nulu).

Napr. + x 7 znamená, že k x sa pričíta 7, <> x 1 znamená, že ak x sa nerovná 0, tak program pokračuje na návestí 1.

Máte daný nasledujúci program v jazyku A--:

= y 0 = z x 1: = u z % u 10 + y u = u z / u 10 % u 10 - y u / z 100 <> z 1 % y 11

a)       Zistite, čo bude v premennej y, ak v premennej x bolo na začiatku číslo 3622817.

b)       Zistite, koľko existuje rôznych päťciferných čísel x zložených len z cifier 1, 2, 3, 4, 5 (každá cifra sa musí vyskytnúť práve raz), aby program skončil s hodnotou 0 v premennej y.

 

4.       Predpokladajme, že v programovacom jazyku máme definovanú procedúru daj s troma parametrami r, s a h, ktorá do špeciálnej dvojrozmernej tabuľky celých čísel zapíše do r-tého riadku a s-tého stĺpca jedno číslo h. Riadky aj stĺpce číslujeme od 1. V programovacom jazyku už nemáme ďalšiu procedúru na prečítanie hodnoty zo žiadneho políčka.

Napíšte program, ktorý túto tabuľku zaplní číslami len s použitím procedúry daj podľa nasledujúceho návodu:

·         v prvom riadku a v prvom stĺpci budú 1 (ostatné políčka sú zatiaľ prázdne);

·         každé iné políčko je súčtom susedného políčka nad sebou a susedného políčka zľava.

Zaplňte prvých N riadkov a N stĺpcov tabuľky, pričom nesmiete použiť žiadne pomocné polia. Hodnota N je konštanta programu, napr. N=15. Pomôcka: v tabuľke sú zapísané čísla pascalovho trojuholníka (tvoria ho kombinačné čísla).

Môžete použiť ľubovoľný programovací jazyk, ktorý ste používali na strednej škole.

ÓAB