mff/15.6.2000/i |
Variant D |
Prijímacie pohovory z informatiky
1.
V n-prvkovom
celočíselnom poli a sa nachádzajú
nejaké čísla. Je daná časť programu:
c:=9; p:=7; b:=0;
for i:=1 to n do
begin
c:=c+p; p:=p+2; b:=2*b;
if a[i]=c then b:=b+1;
end;
writeln(b);
a) Zistite,
čo vypíše tento program, ak sa v poli pre n=7
nachádzajú čísla:
12, 25, 75, 49, 59, 30,
100
b) Navrhnite
čísla c, p a ďalšie štyri hodnoty do 6-prvkového poľa a
?, ?,
121, ?, 169,
?
tak, aby program vypísal číslo
63.
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-1] a po
jeho zatlačení sa číslo na dipleji vynásobí 2 a odčíta 1. Druhé tlačidlo [*3-1] vynásobí číslo na displeji troma
a odčíta 1. Na začiatku je na displeji číslo 2. Postupným stláčaním tlačidiel
môžeme na displeji dosiahnuť rôzne výsledky. Zistite, ktoré z čísel od 2 do 100
sa dajú dosiahnuť dvoma rôznymi postupnosťami tlačidiel.
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--:
=
a 0 = b 1 1: = d c % d 3 <> d 2 + a b + a b 2: - d 1 <> d 3 + a b
3: * b 3 / c 3 <> c 1
a)
Zistite, čo bude v premennej a po skončení programu, ak v premennej c bolo 100.
b)
Zistite, pre akú vstupnú hodnotu c bude mať program po skončení v premennej a číslo 200.
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
uhlopriečkach"):
·
v ľavom hornom rohu je 1;
·
pridáme sprava uhlopriečku, t.j. do prvého riadka a druhého
stĺpca príde 2 a druhého riadka prvého stĺpca dáme 3;
·
pridávame ďalšie uhlopriečky, až 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.