https://akela.mendelu.cz/~xturcin0/algo

online prostředí
  1. Je dána definice uzlu binárního uspořádaného stromu:
    struct Uzel {
    int hodnota;
    Uzel *levy;
    Uzel *pravy;
    };
    Implementujte podprogram hloubka, který určí hloubku stromu s takto definovanými uzly. Samostatný kořen má hloubku 1, strom tvořený pouze kořenem a jeho následníky má hloubku 2 atd.
  2. Na standardním vstupu se nachází řada celočíselných hodnot. Vypište ze vstupní řady dvě hodnoty s největším ciferným součtem.
  3. Předpokládejte, že na vstupu je nezáporné celé číslo N a za ním následuje N desetinných čísel. Vypočtěte směrodatnou odchylku zadané řady.
  4. Předpokládejte, že se na disku nachází textový soubor, v němž jsou uloženy údaje o zaměstnancích – na každém řádku je dvojice údajů: jméno jako jeden řetězec zakončený mezerou a plat jako celočíselná hodnota. Čtěte tento soubor a na standardní výstup vypište jména všech zaměstnanců s platem nad 30 tisíc Kč. Jméno souboru je zadáno jako parametr programu z příkazového řádku. Pokud parametr chybí nebo soubor nelze otevřít, program nebude dělat nic.

  1. Ze souboru cisla.txt načtěte čísla a uložte je do binárního souboru cisla.dat.
  2. Z vytvořeného souboru cisla.dat načtěte čísla do pole (V souboru je maxinálně 10000 celých čísel. Čísla jsou v rozsahu 0 až 32999).
  3. Vytvořte proceruru, která naplní pole N hodnotami v rozmezí od 0 do maxHodnota.
  4. Seřaďte čísla v poli pomocí buble sortu.
  5. Seřaďte čísla v poli pomocí insert sortu.
  6. Seřaďte čísla v poli pomocí principu množiny.

  1. V textovém souboru dopis.txt určete počet vět.
  2. V textovém souboru dopis.txt spočítejte četnost jednotlivých písmen. Nerouzlišujte velikost.
  3. Z textového souboru dopis.txt vypište nejdelší řádek.
  4. V textovém souboru dopis.txt nahraďte textový řetězec "babicko," za "maminko," a uložte novou vezri do souboru dopisMamince.txt
  5. Načtěte studenty do binárního stromu tak, aby byl vyvážený.
  6. Načtěte studenty do binárního stromu tak, aby byl seřazený.

Vytvořte program, který bude umožní uchovávat pomocí dynamických proměnných seznam studentů, o kterých známe, jméno, příjmení, třídu (1.A, ...), pohlaví (m/z) a průměrnou známku. Program bude implementovat následující funkcionalitu:
  1. Přidej studenta (za začátek seznamu, na konec seznamu).
  2. Odeber studenta (ze začátku seznamu, z konce seznamu).
  3. Vypiš studenty v seznamu.
  4. Vypiš počet studentu v seznamu.
  5. Načti studenty z textového souboru (zaci.txt).
  6. Zapiš studenty do textového souboru.
  7. Vytvořte proceduru, která vyprázdní seznam včetně uvolnění paměti.
  8. Vyhledej studenta podle:
  9. Upravte načítání ze souboru tak, že studenti v seznamu budou řazeni abecedně podle příjmení. Předpokládejte, že seznam do kterého vkládáte je již abecedně seřazený.

  1. Vytvořte datový typ pro dvourozměrné pole. Vytvořte proceduru na výpis matice. Od uživatele načťte rozměr čtvercové matice a naplňte ji (uvedené příklady jsou pro n=3):
  2. Vytvořte proceduru pro načtení matice N × M zadávanou po řádcích (N - počet řádků, M - počet sloupců).
  3. Určete číslo řádku s největším součtem.
  4. Prohoďte minimální a maximální prvek v matici.
  5. Sestavte program, který je uloží do čtvercové matice daného řádu n (n je liché) podle následujícího schématu (uvedeno pro n=7) a tuto matici vytiskne.
    *******
    *****
    ***
    *
    ***
    *****
    *******
  6. Načtěte do proměnná typu string celý řádek a určete, kolik je tam číslic.
  7. Načtěte do proměnná typu string celý řádek a určete, kolik je tam čísel (uvažujte pouze celá čísla).
  8. Načtěte do proměnná typu string celý řádek. Řetězec upravte tak, aby na začátku každého slova bylo velké písmeno.
  9. Na vstupu se nachází posloupnost slov, poslední slovo v řadě je „xxx“. Určete počty jednotlivých písmen z malé anglické abecedy. Písmena vypište v abecedním pořadí. Vypište pouze ta písmena, která se vyskytnou alespoň jednou.
    Příklad vstupu: Ahoj Jirko, jak ses vcera vecer mel? xxx
    Odpovídající výstup: a: 2; c: 2; e: 5; h: 1; i: 1; j: 2; k: 2; l: 1; m: 1; o: 2; r: 3; s: 2; v: 2;
  10. Matice představuje zadání N lineárních rovnic o N neznámých. Vytvořte algoritmus, který kořeny vypočítá.

  1. Vytvořte funkci, která spočítá součet všech hodnot v poli předaném jako parametr.
  2. Vytvořte funkci, která spočítá aritmetický průměr všech hodnot v poli předaném jako parametr.
  3. Na vstupu je řada celých čísel ukončená číslem -333 (toto číslo do řady již nepatří). Vypište všechna nadprůměrná čísla z řady.
  4. Na vstupu je řada celých čísel ukončená číslem -333 (toto číslo do řady již nepatří). Určete, kolik čísel bylo menších něž poslední číslo z řady.
  5. Vytvořte proceduru pro načtení vektoru N reálných čísel a proceduru pro výpis N reálných čísle. Výpis čísel vhodně formátujte.
  6. Vytvořte funkci pro výpočet skalárního součinu dvou stejně velkých celočíselných vektorů.
  7. Na vstupu jsou dvojice hodnot, řada končí dvojicí 0 0. Hodnoty rozdělte do dvou vektorů a spočítejte jejich skalární součin. Dále určete, který z vektorů má větší aritmetický průměr.
  8. Na vstupu je řada celých čísel ukončená číslem -333 (toto číslo do řady již nepatří). Určete, kolik se v čílsech vyskytovalo jednotlivých číslic (kolik nul, jedniček, ...).
  9. Vytvořte proceduru, co vynásobí vektor zadaným číslem.
  10. Vytvořte proceduru, co jako parametry přijme dva vektory a počet jejich prvků a do prvního z nich uloží součet obou vektorů.
  11. Vytvořte proceduru, co obratí pořadí prvků v zadaném poli.
  12. Načtěte N celočíselných hodnot. Pokud bude více kladných než záporných, vypište hodnoty všech záporných v absolutní hodnotě. V opačném případě vypište druhé mocniny kladných hodnot původní řady.
  13. Vytvořte proceduru, které seřadí prvky vektoru od nejmenšího po největší.

  1. Na vstupu je řada znaků ukončená znakem ‘!‘. Určete počet přirozených čísel, které se v řadě nachází.
  2. Na vstupu je řada znaků ukončená znakem ‘!‘. Nalezněte v ní největší číslo (uvažujte jen celá čísla).
  3. Vytvořte vlastní funkci pro výpočet funkce sinus. Výpočet postavte na využití rozvoje funkce sinus v nekonečnou řadu.
    sin( x )= x - x 3 3! + x 5 5! - x 7 7! + x 9 9! - ...
  4. Obdobným způsobem vytvořte i funkce cosinus a ex
    cos( x )= 1 - x 2 2! + x 4 4! - x 6 6! + x 8 8! - ...
    e x = 1 + x + x 2 2! + x 3 3! + x 4 4! + ...
  5. Vytvořte funkci pro výpočet faktoriálu pomocí rekurze.
  6. Vytvořte funkci n-té mocniny reálného čísla pomocí rekurze.
  7. Vytvořte funkci násobení přiřozených čísel bez využití operace násobení pomocí rekurze.
  8. Vytvořte funkci pro výpočet ciferného součtu celého nezáporného čísla.
  9. Vytvořte funkci pro výpočet největšího společného dělitele dvou přirozených čísel. Funkce muže využít pouze operátory + nebo -.
  10. Na vstupu je řada přirozených čísel. Vypište to, ve kterém se po sobě nejčastěji vyskytuje stejná cifra.
    Příklad vstupu: 231 2344 2453 122241 999899 277771 872422 325 88 253553
    Odpovídající výstup: 277771

  1. Na vstupu je řada znaků. Určete kolik se v ní nachází malých písmen anglické abecedy před první tečkou.
  2. Na vstupu je řada znaků. Určete kolik procent znaků tvoří jiné znaky než malá a velká písmena anglické abecedy. Řada je ukončena znakem ‘*‘.
  3. Na vstupu je řada celých čísel ukončené číslem -333 (toto číslo do řady nepatří). Určete počet sudých čísel.
  4. Na vstupu je řada celých čísel ukončené číslem -333 (toto číslo do řady nepatří). Určete aritmetický průměr lichých čísel.
  5. Na vstupu je řada celých čísel ukončené číslem -333 (toto číslo do řady nepatří). Určete počet čísel větších než první zadané číslo řady.
  6. Vytvořte funkci pro výpočet kořene lineární rovnice p * x + q = 0.
  7. Vytvořte funkci pro výpočet absolutní hodnoty.
  8. Vytvořte proceduru pro prohození dvou čísel.
  9. Vytvořte funkci, které určí, zda zadané číslo je prvočíslo.

  1. Načtěte celé nezáporné číslo a vypište jeho faktoriál.
  2. Načtěte celé číslo a, které reprezentuje první člen aritmetické posloupnosti. Dále načtěte celé číslo (nenulové) d, které představuje rozdíl mezi jednotlivými členy aritmetické posloupnosti. Vypište 50 prvních členů této aritmetické posloupnosti (výpis proveďte tak, aby na řádku bylo vždy 10 členů).
  3. Načtěte celé číslo a, které reprezentuje první člen geometrické posloupnosti. Dále načtěte reálné číslo (nenulové) q, které představuje podíl mezi jednotlivými členy geometrické posloupnosti. Vypište 50 prvních členů této geometrické posloupnosti (výpis proveďte tak, aby na řádku bylo vždy 10 členů).
  4. Načtěte přirozené číslo N, které je větší než 2. Vypište N prvních členů Fibonacciho posloupnosti.
  5. Na vstupu je řada celých čísel ukončené číslem -333 (toto číslo do řady nepatří). Určete součet všech čísel v řadě.
  6. Na vstupu je řada N celých čísel (N je potřeba načíst od uživatele). Určete součet všech čísel v řadě.
  7. Načtěte dvě celá nezáporná čísla a bez použití multiplikativních operátorů vypište jejich:
  8. Načťete přirozené číslo a určete, zda se jedná o prvočíslo.

  1. Načtěte dvě celá čísla a vypište jejich součet.
  2. Načtěte dvě celá čísla a vypište to největší.
  3. Načtěte dvě celá čísla a vypište absolutní hodnotu jejich rozdílu (bez použití funkce pro absolutní hodnotu).
  4. Načtěte tři celá čísla a vypište to prostřední.
  5. Načtěte tři celá čísla a vypište je od největšího po nejmenší.
  6. Načtěte tři strany trojúhelníka (reálná čísla) a vypočítejte jeho obvod.
    Dále určete jedná-li se o trojúhelník:
  7. Načťete koeficienty a, b, c kvadratické rovnice, kde a⋅x2+b⋅x+c=0, a vypište její kořeny.
    Ověřte pro: