Zbierka úloh z Pascalu

Textové súbory   Unit Crt   Grafika   Pole   Rôzne  

Textové súbory

  1. Napíšte program, ktorý zobrazí obrázok zakódovaný v súbore obraz.txt.
    Súbor obsahuje postupnosť čísel (v jednom riadku max. 80, počet riadkov je max. 50), každé číslo znamená farbu jedného obrazového bodu.
  2. Napíšte program, ktorý skomprimuje obrázok obraz.txt tak, že namiesto N rovnakých čísel idúcich za sebou napíše to číslo iba raz a za ním uvedie počet čísel. Čísla budú oddelené medzerami.
    Napríklad:
          vstup:
          0 0 0 0 0 0 0 0 14 14 0 0 0 0 0
          0 0 0 0 0 0 14 14 0 0 14 14 0 0 0
          0 0 0 0 0 14 0 0 0 0 0 0 14 0 0
          
          výstup:
          0 8 14 2 0 5
          0 6 14 2 0 2 14 2 0 3
          0 5 14 1 0 6 14 1 0 2
          
  3. Vo vstupnom súbore nahraďte všetky medzery reťazcom "%20"
  4. Napíšte program, ktorý prepíše daný text do morzeovky. Kódy jednotlivých písmen abecedy nájdete v súbore morse.txt.
    Vstupný text načítajte zo vstupnej obrazovky, zakódovaný text zapíšte do súboru "vystup.txt". (Ak je na vstupe aj iný znak ako písmeno abecedy, tak ho preskočte, kódy jednotlivých písmen vo výstupnom súbore oddeľte medzerami).
  5. Napíšte program, ktorý bude zarovnávať daný vstupný súbor (vypíše v každom riadku daný počet znakov = n, ak spájam koniec riadku so začiatkom do výstupného súboru vkladám medzeru).
    Napr.: pre vstupný súbor ZAROVNAJ.IN, ktorý má tvar:
          "Toto je subor, ktory ma v kazdom riadku iny pocet znakov.
          Treba vyrobit novy subor
          podobny obdlzniku."
          
    pre N =15 má výstupný súbor ZAROVNAJ.OUT tvar:
          "Toto je subor,
          ktory ma v kazd
          om riadku iny p
          ocet znakov. Tr
          eba vyrobit nov
          y subor podobny
          obdlzniku."
          
  6. Na našej škole bude deň otvorených dverí. Pre ľahšiu orientáciu po škole potrebujeme všade rozmiestniť orientačné šípky. Vytvorte program, ktorý načíta nápisy zo súboru SIPKY.IN a pomôže utvoriť jednoduché šípky, ktoré uloží do súboru SIPKY.OUT. Obsah vytvoreného súboru vypíšte na obrazovku.
    Napr.:
          SIPKY.IN :  ZBOROVNA
                      SVL
          SIPKY.OUT:
                      \
               --------\
              |ZBOROVNA >
               --------/
                      /
    
                 \
               ---\
              |SVL >
               ---/
                 /
          
  7. Zostavte program, ktorý bude simulovať informačnú tabuľu na autobusovej stanici v Slaninkovciach. Denne odchádza z tejto stanice 10 autobusov. Údaje načítajte zo vstupného súboru, ktorý obsahuje cieľovú stanicu a čas odchodu (súbor si vytvorte). Informačná tabuľa funguje tak, že autobus, ktorý práve odišiel zmizne z informačnej tabule a všetky ostatné sa posunú vyššie
  8. Lotéria
    V textovom súbore chceme mať vyžrebované čísla v lotérii LOTO 5 z 35(každý riadok jedno žrebovanie). Vytvorte program, ktorý:

    • simuluje 10 žrebovaní (t.j. 1 žrebovanie vygeneruje 5 rôznych náhodných čísel z intervalu 1..35) a uložte ich do textového súboru. Každé žrebovanie bude 1 riadok
    • vypíše číslo, ktoré padlo najčastejšie
    • vypíše číslo, ktoré padlo najmenej krát (ak všetky padli, tak vypíše tie, čo padli najmenej krát, ale majú rovnaký počet padnutí)
  9. Úloha na pomocné body:
    Napíšte program, ktorý posunie titulky o vopred zadaný čas.
    Skúste upraviť napr. súbor IceAge2_2.sub
    Upraviť ich treba tak, že ku všetkým číslam v zátvorkách {} pripočítate vami zadaný čas, všetko ostatné zostane nezmenené.
    Napríklad posunutie o čas 100:
          vstup:
          {1}{1}25.000|www.titulky.com
          {3872}{4122}Sub  by  spawn  for   www.war4z.net
          {4747}{4814}To globální oteplování |mě snad zabije.
          
          výstup:
          {101}{101}25.000|www.titulky.com
          {3972}{4222}Sub  by  spawn  for   www.war4z.net
          {4847}{4914}To globální oteplování |mě snad zabije.
          
Na začiatok

Unit Crt

  1. Napíšte program, ktorý bude simulovať klavír, t.j. po stlačení určitého klávesu sa ozve príslušný tón a znie až po stlačenie klávesu iného tónu, alebo až po stlačenie klávesu "Enter", čím sa vypne zvukový generátor, ale v hraní sa môže pokračovať. Po stlačení klávesu "Medzera" program skončí. Program by mal tiež vypísať informáciu o rozložení tónov na klávesnici.
    Tón Hz Tón Hz Tón Hz
    C 262 F 349 A 440
    Cis 277 Fis 370 Ais 466
    D 294 G 392 H 494
    Dis 311 Gis 415 C 623
    E 330
  2. Je zadaný vstupný text. Zostavte program, aby sa text pohyboval po obrazovke a odráža sa od okrajov. Upravte program, aby:

    • pri pohybe necháva niekoľko stôp za sebou...
    • sa roloval text – pohyblivé titulky
Na začiatok

Grafika

  1. Napíšte program, ktorý na obrazovku nakreslí nasledujúce obrázky:
  2. Nakreslite na obrazovku N rovnakých domčekov v rade vedľa seba (číslo N načítajte zo vstupnej obrazovky)
  3. Nakreslite na obrazovku N domčekov v rade vedľa seba tak, aby každý ďalší domček bol o 10 pixelov väčší ako predchádzajúci (číslo N a veľkosť prvého domčeka načítajte zo vstupnej obrazovky)
  4. Zakódujte vami nakreslený obrázok do textového súboru tak, aby jeden riadok v textovom súbore obsahoval postupnosť čísel oddelených medzerami, každé číslo znamená farbu jedného pixelu (viď obrázok:)
  5. Naprogramujte šetrič obrazovky.
    Po spustení programu sa na obrazovke na náhodných miestach budú objavovať štvorce vyplnené náhodnou farbou a náhodným štýlom výplne.
    Program skončí, keď stlačíme ľubovolný kláves.
  6. Napíšte program, ktorý:
    • v grafickom režime zobrazí ponuku:
      "Pohyb: sipky, Zmena velkosti: +-, Zmena farby: medzera"
    • v strede obrazovky zobrazí kružnicu s polomerom 5 náhodnej farby
    • umožní používateľovi ovládať kružnicu pomocou klávesov v menu (stlačením šípiek sa kružnica posunie v príslušnom smere, stlačením +, resp. - sa zväčší alebo zmenší, stlačením medzery zmení farbu na inú náhodnú farbu)
    • program skončí stlačením ESC
  7. Ilustrujte na obrazovke preteky 3 psov (tvar psa je kruh s dvomi očami a ústami, každý inej farby) po vodorovnej ceste, každý pes spraví krok naraz o rôznu (náhodnú) vzdialenosť
  8. Napíšte program, ktorý nakreslí graf funkcie y=sin(x), pričom bod [0,0] je v strede obrazovky.
  9. Zostavte program, ktorý:
    • pre dané N a dĺžku D nakreslí na obrazovke pravidelný N-uholník so stranou dĺžky D ( využite korytnačiu grafiku)
    • pre dané N a dĺžku D nakreslí na obrazovke N-2 pravidelných n-uholníkov so stranou dĺžky D ( najskôr trojuholník, potom štvorec, päťuholník... až po N-uholník)
  10. Pre dané čísla N, D nakreslite na obrazovku N trojuholníkov, pričom dĺžka strany prvého trojuholníka je D a každý ďalší trojuholník má stranu o 10 kratšiu ako predchádzajúci (viď obrázok)
Na začiatok

Pole

  1. Je dané pole
          var p: array[1..100] of byte
          
    Naplňte toto pole náhodnými číslami z intervalu 0..255 a vykreslite prvky poľa na obrazovku ako paličky. Najväčšiu paličku zobrazte čevnenou farbou, najmenšiu zelenou a všetky ostatné bielou farbou.
  2. Majme triedu, v ktorej je N žiakov. Popis triedy nájdete v textovom súbore ziaci.txt.
    Jeho štruktúra je nasledovná:
    • číslo N
    • N riadkov, v každom z nich je jedno číslo z intervalu 150..200 (výška daného žiaka), za ním je medzera a potom nasleduje meno žiaka (dlhé max. 10 znakov)
    Napíšte program, ktorý načíta údaje o žiakoch a na obrazovku vypíše:
    • mená všetkých žiakov aj ich výšky
    • meno najvyššieho žiaka
    • meno žiaka, ktoré je prvé podľa abecedy
    Pomôcka: budete potrebovať 2 polia:
        var mena: array[1..n] of string[10]; {pole stringov, ktorych maximalna dlzka je 10 znakov}
            vysky: array[1..n] of byte;
          
  3. Je daný textový súbor sneh_LS.txt, ktorý obsahuje údaje o výške snehu v Lomnickom sedle za jeden mesiac.
    Jeho štruktúra je nasledovná:
    • názov mesiaca
    • číslo N - počet dní v mesiaci
    • N riadkov, v každom z nich je jedno kladné celé číslo (výška snehu v príslušný deň)
    Napíšte program, ktorý načíta potrebné údaje zo súboru a na obrazovku vypíše:
    • maximálnu a minimálnu výšku snehu za daný mesiac
    • priemernú výšku snehu za daný mesiac
    • najväčší prírastok snehu za jeden deň
    • najdlhší počet dní v mesiaci idúcich za sebou, počas ktorých sa výška snehu nezmenila
Na začiatok

Rôzne úlohy

  1. Zostavte program na prevod čísla z desiatkovej sústavy do ľubovoľnej číselnej sústavy (2-16) a naopak.
  2. Usporiadaná trojica prirodzených čísel (A,B,C) sa nazýva Pytagorejská trojica, ak A2+B2=C2, A<>B . Strana dĺžky C je prepona, A je kratšia, B dlhšia odvesna.
    Úloha: Napíšte program, ktorý vypíše prvých N Pythagorejských trojíc, usporiadaných vzostupne podľa prepony a pre rovnaké prepony, podľa kratšej odvesny
  3. Koľko existuje rôznych spôsobov vyplatenia - rozmenenia peňažnej sumy (VSTUP = peňažná suma) z rozmedzia 10 hal. až 10 Sk pomocou mincí 10, 20, 50 hal. a 1, 2, 5, 10 Sk?
  4. Napíšte program, ktorý rekurziou vypočíta najväčšieho spoločného deliteľa zadaných čísel podľa Euklidovho algoritmu
  5. V poli P je N celých čísel - kladné, záporné a práve jeden nulový prvok.
    Napíšte program, ktorý pre dané N a P čo najefektívnejšie "utriedi" pole tak, že na jeho začiatku budú všetky záporné prvky, potom nulový prvok a na konci všetky kladné. Na poradí čísel v jednotlivých skupinách nezáleží
  6. Napíšte program, ktorý zo vstupu načíta znakovú reprezentáciu čísla a vypíše hodnotu tohto čísla.
    Znaková reprezentácia má tvar:
    • môže začínať unárnym "+" , "-"
    • časť pred desatinnou bodkou musí obsahovať aspoň 1 cifru
    • ak číslo obsahuje desatinnú bodku, desatinná časť musí obsahovať aspoň 1 cifru
    • reálne číslo môže byť dané v semilogaritmickom zápise (napr. 5E-10)
  7. Napíšte program pre nájdenie koreňov rovnice ax2+bx+c=0, kde a,b,c sú reálne čísla.
  8. Pracovníci oddelenia počítačovej literatúry potrebujú ako podklad pre svoju novú knihu tabuľku výskytu jednotlivých znakov v texte. Vašou úlohou je zostaviť program, ktorý vypíše tzv. frekvenčnú tabuľku. Vstupovať bude súvislý text (max. 50 znakov), program bude spracúvať interpunkčné znamienka ( , . medzera ), a výslednú tabuľku usporiada vzhľadom na percentuálny podiel znaku oproti počtu všetkých znakov v texte
Na začiatok