Homepage » Cvičení » Příklady

Příklady na programování

Na této stránce máte další příklady k tomu, co jsme probrali, na kterých si můžete procvičit svoje programátorské schopnosti.

Vstup, výstup a aritmetika

  1. Vypište na obrazovku
    ***
    **
    *
  2. Načtěte z klávesnice celé číslo a o 1 vyšší hodnotu vypište.
  3. Načtěte reálné číslo – rychlost v km/h – a vypište ji v m/s.
  4. Načtěte dvě celá čísla, vypište jejich celočíselný podíl a zbytek po dělení.

Příkaz if

  1. Načtěte celé číslo a vypište jeho znaménko, buď kladne, nebo zaporne, nebo nula.
  2. Načtěte celé číslo a vypište jeho paritu, buď sude, nebo liche.
  3. Jako 4. příklad v minulé části, ale pokud je druhé číslo 0, program místo výsledků vypíše nejde delit nulou.
  4. Načtěte tři čísla a vypište z nich to největší.
  5. Načtěte tři čísla – koeficienty kvadratické rovnice – a vypište řešení. Počitejte i s případy, že nějaký koeficient je 0 a že řešení může být jen jedno nebo žádné.

Cykly while a repeat…until

  1. Donuťte uživatele napsat třeba číslo 12 – vypisujte Zadej cislo 12: a čekejte na vstup, dokud ho uživatel nezadá.
  2. Totéž, ale stačí, když napíše číslo mezi 0 a 100. (Podobná funkce se může hodit, když třeba chcete, aby uživatel zadal smysluplnou hodnotu, třeba svůj věk.)
  3. Naprogramujte Euklidův algoritmus pro výpočet největšího společného dělitele.
  4. Sčítejte členy řady 1/2i od i=1, dokud není hodnota členu menší než 0.0001, a pak vypište výsledek. Nepotřebujete umět mocnit.

Cyklus for

  1. Načtěte celé číslo a vytiskněte tolik hvězdiček za sebou.
  2. Načtěte dvě celá čísla a vypište všechny hodnoty mezi nimi. Pokud je druhé číslo větší, než první, vypište je sestupně.
  3. Načtěte reálné číslo a vypište jeho nula- až desetinásobek.
  4. Vypište malou násobilku.
  5. Vypište přirozená čísla menší než 100, která nejsou dělitelná 5 ani 7.
  6. Načtěte přirozené číslo a zjistěte jeho největšího vlastního dělitele.
  7. Načtěte přirozené číslo a zjistěte, zda je prvočíslo.

Jednorozměrné pole

  1. Naplňte všechny prvky pole celých čísel p tak, že p[i] = i*(10-i).
  2. Vyhledejte číslo v poli (obecně neuspořádaném); pokud tam je, vypište index, pokud není, vypište 0.
  3. Vyhledejte číslo v uspořádaném poli a uspořádanost využijte ke značnému zrychlení algoritmu. Jaká je složitost?
  4. Najděte nejmenší prvek v poli a vyměňte ho s prvním prvkem. Tuto schopnost pak využijte k uspořádání celého pole. Jaká je složitost?
  5. Naprogramujte Erastothenovo síto, například vypište všechna prvočísla menší než 10000. Složitost?

Funkce

Kterýkoli příklad z výše uvedených, který vydá nějaký jeden výsledek, můžete přepsat na funkci. Zatím se netrapte předáváním pole jako parametru, v takovém případě použijte globální proměnnou. Pár dalších možných funkcí:

  1. Z (třeba) tří čísel vrátí to nejmenší.
  2. Funkce načte tři parametry, počet hodin, minut a sekund, a vrátí, kolik je to dohromady sekund.
  3. Zjistěte, zda je datum (rok, měsíc, den) validní a vraťte hodnotu typu boolean. Datum je validní, pokud měsíc je mezi 1 a 12 a den mezi 1 a počet dnů daného měsíce. Můžete kontrolovat přestupnost roku.
  4. Spočítejte funkcí kombinační číslo.

Procedury

Podobně jako u funkcí, mnoho příkladů z výše uvedených můžete napsat jako proceduru, tady jsou nějaké další nápady:

  1. Jediný parametr procedury je počet sekund a vy ho rozložte na srozumitelný čas – (dny,) hodiny, minuty, sekundy – a ten vypište.
  2. Seřaďte (třeba) tři proměnné přijaté jako parametry podle velikosti.
  3. Vypište všechny dělitele čísla.

Rekurze

  1. Měli byste být schopni spočítat n-tý člen jakékoli běžné rekurentně zadané posloupnosti.
  2. Spočítejte n-té Catalanovo číslo pomocí rekurentní formule. Použijte cacheování.

Všehochuť

  1. Šachovnice
    • Vyberte si nějakou šachovou figurku, popřípadě si vymyslete nějakou novou:
    • Kolik nejméně těchto figurek je potřeba, aby ohrožovaly celou šachovnici?
    • Kolik nejvýše těchto figurek je možné umístit tak, aby se navzájem neohrožovaly?
    • Na kolik tahů se dostane figurka z jednoho políčka na druhé?
  2. Všechna slova obsahující x nahraďte *, zbytek ať se nezmění.
  3. Vypiště kalendář zadaného roku.
  4. Zjistěte, kolika způsoby se dá zaplatit zadaná částka pomocí běžných bankovek a mincí.

Spojový seznam

Zkuste při implementaci procedur a funkcí využívat jednak těch už implementovaných a jednak toho, že s každý prvek seznamu je hlavou podseznamu. (Dá se to říct také tak, že spojový seznam je buď nil nebo prvek seznamu + pointer na seznam.)

  1. Přidání na začátek
  2. Odebrání ze začátku
  3. Zjištění, zda je prvek v seznamu
  4. Přidání jednou (pokud už prvek ve spojáku je, nepřidávat)
  5. Odebrání prvního výskytu
  6. Odebrání všech výskytů
  7. Spočítání výskytů
  8. Zařazení prvku (předpokládejte, že je seznam setříděný a zařaďte nový prvek, aby stále byl setříděný)
  9. Zmnožinování (každý prvek seznamu se v něm po zmnožinování bude vyskytovat právě jednou)
  10. Setřídění prvků seznamu