mff/13.6.2000/i |
Variant B |
Prijímacie pohovory z informatiky
1.
V n-prvkovom
celočíselnom poli a sa nachádzajú
rôzne čísla z množiny {1,2,...,n}.
Je daná časť programu:
p:=0;
for i:=1 to n do
if i<>a[i] then
if i=a[a[a[i]]] then p:=p+1;
writeln(p);
a) Zistite,
čo vypíše tento program, ak sa v poli pre n=8
nachádzajú čísla:
5, 3, 6, 8, 7, 2, 1, 4
b) Navrhnite
také hodnoty do poľa a (pre čo
najmenšie n), aby program vypísal
číslo 9.
2.
V múzeu výpočtovej techniky sme objavili historickú
celočíselnú kalkulačku, ktorá až na dve tlačidlá vôbec nefunguje. Jedno
tlačidlo má označenie [*2] a po jeho
zatlačení sa číslo na dipleji vynásobí 2. Druhé tlačidlo [÷3] vydelí číslo na displeji troma - delenie je celočíselné, t.j.
zvyšok po delení sa zanedbá. Na začiatku je na displeji číslo 3. Postupným
stláčaním tlačidiel môžeme na displeji dosiahnuť rôzne výsledky.
a)
Je daná nasledovná postupnosť stláčania tlačidiel na tejto
kalkulačke
*2 *2 *2 *2 ÷3 ÷3 *2 *2 *2 *2 *2 ÷3 ÷3 ÷3 *2 *2 *2 ÷3
Zistite, aký výsledok dostaneme ak zadáme túto postupnosť príkazov.
b)
Na displeji je na začiatku číslo 3. Napíšte čo najkratšiu
postupnosť operácií (t.j. tlačidiel) takú, aby ako výsledok vzniklo to isté
číslo ako v príklade a).
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, < test na menší ako
0);
·
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 1: < x 2 + y 1 = z y + z z - z 1 - x z <> y 1 2: - y 1
a)
Zistite, čo bude v premennej y po skončení programu, ak v premennej x bolo 123.
b)
Zistite, pre akú vstupnú hodnotu x bude mať program po skončení v premennej y číslo 33. Nájdite všetky riešenia.
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í rôznymi číslami len s použitím procedúry daj podľa nasledujúceho návodu (číslovanie políčok "po
štvorcoch"):
·
v ľavom hornom rohu je 1 - vytvoril sa štvorec veľkosti 1x1;
·
k tomuto "štvorcu" pridáme sprava stĺpec a zospodu
riadok tak, aby sa očísloval štvorec 2x2 (nové políčka postupne číslujeme
odvrchu a potom vľavo);
·
takto postupne pridávame stĺpce a riadky, kým neočíslujeme
celú tabuľku veľkosti NxN.
Zaplňte prvých N riadkov a N stĺpcov tabuľky číslami od 1 do N*N, pričom nesmiete
použiť žiadne pomocné polia.
Môžete použiť ľubovoľný
programovací jazyk, ktorý ste používali na strednej škole.