Cvičení z programování I

Ve školním roce 2007/2008 vedu cvičení z předmětu Programování I [NPRG030]. Cvičení se koná každé sudé pondělí od 14.00 v S11, každé liché v tentýž čas v počítačové laboratoři SW2. K tomu potřebujete účet v laboratoři, založí vám ho pan Matouš (viz stránka laboratoří).

Podmínky k získání zápočtu jsou (AND):

Zápočtový program

Domácí úkoly

Domácí úkoly jsou dvou druhů:

Na získání kýžené stovky bodů bohatě stačí praktické úlohy, pokud je řešíte včas.

Úkoly lze řešit v Pascalu nebo Céčku.

DatumIDBodyPříklady
15. 10. bnim10Odebírání zápalek s jednou hromádkou. V každém tahu lze odebrat libovolnou mocninu dvojky, prohrává, kdo nemůže táhnout. Jaká je vyhrávající strategie?
29. 10. sqrt10Naprogramujte celočíselné odmocňování, tj. program, který pro zadané číslo N vrátí dolní celou část druhé odmocniny z N. Hint: půlení intervalu. Hint 2: nepoužívejte typ real.
kmin20Naprogramujte hledání k-tého nejmenšího z N čísel v čase lepším než Ω(k*n).
5. 11. divs25Napište program, který pro všechna čísla od 1 do N spočte, kolik mají dělitelů. Zkuste upravit Eratosthenovo síto a zachovat jeho původní časovou složitost O(n*log log n).
12. 11. sums10Je zadána posloupnost přirozených čísel a číslo K. Napište program, který v této posloupnosti najde souvislý úsek, jehož součet je přesně K. [O(n)]
[+10 bodů] Totéž, ale s celými čísly místo přirozených. [O(n*log n)]
26. 11. loop20Napište funkci, která o zadaném jednosměrném spojovém seznamu určí, zda je či není zacyklený (tj. poslední prvek má jako další nikoliv nil, nýbrž některý z předchozích prvků). Žádá se lineární čas a konstantní pomocná paměť (to speciálně znamená, že zadaný seznam nesmíte nijak modifikovat).
padd10Napište sčítání polynomů v řídké reprezentaci (spojový seznam dvojic (koef, exponent) uspořádaný vzestupně podle exponentu; členy s nulovými koef. chybí. [O(n)]
pmul20Napište násobení polynomů v téže reprezentaci. Nezapomeňte odstraňovat členy s nulovými koeficienty. [čas O(n2), prostor O(n)]

Libovolný příklad můžete poslat vícekrát, vždy platí nejvyšší dosažené skóre.

Stránku spravuje Martin Mareš