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