Druhá série prvního ročníku KSP
Tyto úlohy pocházejí z desetileté ročenky KSP. Jejich řešení bohužel nemáme v elektronické podobě, takže na ně budete muset přijít sami.Zadání úloh
1-2-1 Ticovo číslo
Ticovo číslo tn je definováno takto:
t0 | = t1 = t2 = 1 |
tn | = tn-1 + tn-2 + tn-3 pro n>2 (n celé). |
Napište program, který pro zadané n vypíše přesnou hodnotu Ticova čísla tn.
Pozor! Posloupnost Ticových čísel roste poměrně rychle, nemůžete tedy předpokládat, že se ho podaří uchovat v jednoduché číselné proměnné.
1-2-2 Schůdná matice
Nechť M je celočíselná čtvercová matice řádu n obsahující nuly a jedničky, přičemž M1,1 = Mn,n = 1. Matice M je schůdná, jestliže se dá přejít z prvku M1,1 na prvek Mn,n. Z libovolného prvku matice lze přejít na kterýkoli nenulový sousední prvek. Sousedními prvky k Mi,j jsou:
Mi+1,j | jestliže i<n |
Mi-1,j | jestliže i>1 |
Mi,j+1 | jestliže j<n |
Mi,j-1 | jestliže j>1. |
Napište program, který načte ze vstupu matici a zjistí, zda je schůdná.
1-2-3 Chutné výrazy
Chutným výrazem nazveme aritmetický výraz složený z nezáporných
celých čísel, kulatých závorek a operátorů +
, -
, *
, /
s obvyklou
syntaxí a prioritami. Znak /
představuje celočíselné dělení.
Napište program, který přečte ze vstupu řetězec, zjistí, zda je to chutný výraz, a v kladném případě vytiskne jeho hodnotu.
Příklad: Pro vstup 5-(2+4)/2
program vytiskne 2.
1-2-4 Křížové reference
Napište generátor křížových referencí (GKR). GKR je program, který na vstupu dostane text složený z řádků. Vyhledá v něm všechny identifikátory a vytiskne jejich abecední seznam, přičemž u každého identifikátoru uvede čísla řádků, na nichž se vyskytl. Identifikátor je neprázdná posloupnost písmen a číslic začínající písmenem. U identifikátorů delších než 8 znaků uvažuje GKR jen prvních 8 znaků. Vstupní text je k dispozici jenom jednou (představujte si třeba, že vstupuje z klávesnice) a nemusí se vejít do operační paměti.
Příklad: Pro vstupní text
KREMILEK A VOCHOMURK
A
A:=A+1; C++;
(*KARELNOVY) ();
!KARELNOVOTNY!
vydá GKR výstup
A 1 2 3
C 3
KARELNOV 4 5
KREMILEK 1
VOCHOMUR 1