Algoritmide ülesanded

Järgneval lehel on kogum erinevatest algoritmidest, millele tudeng peaks oskama iseseisvalt lahenduse koostada. Sarnase keerukusega algoritme võib esineda kontrolltöös. Osa alltoodud algoritmidest lahendatakse erinevate tunnitööde ja kodutööde raames jooksvalt.

Meeldetuletuseks!

  1. Algoritmi realisatsioon ei tohiks olla programmeerimiskeelest sõltuv. Eesmärk on lahendada ülesanne, kuid mitte kasutada ühele või teisele programmeerimiskeelele omast kirjapilti
  2. Programmeerimine 1 aine kontrolltöö hetkeks ei pea sa oskama kõiki allolevaid ülesandeid programmeerida – näiteks sõnedest ja failidest me selleks hetkeks veel rääkinud ei ole. Küll aga pead suutma lahenduse eeskirja välja mõelda.

Algoritm 1: Toidukaal

  • Koosta algoritm, mis matkib toidukaalu käitumist poodides.
  • Sisenditeks on kaal ning tootekood
  • Tuleb leida valitud kaup, kauba kilohind ning koguhind vastavalt kaalule.
  • Lahendus peab arvestama erinevate vigadega, mis võivad esineda

Algoritm 2: Sularahaautomaat

  • Ülesandeks on matkida sularahaautomaadi käitumist
  • Klient soovib sularahaautomaadist raha välja võtta ning sisestab soovitud summa (automaadis valik “muu summa”)
  • Sularahaautomaadis on valuutaks Eestis käibel olevad eurokupüürid
  • Tuleb veenduda, et soovitud summa on võimalik väljastada.
  • Väljastatakse kupüürid lähtudes eesmärgist anda võimalikult väike arv kupüüre.
  • Nt: 537€ -> viga; 195€ -> 1×100€ + 1×50€ + 2×20€ + 1×5€

Variatsioon 1: Väikesed kupüürid

  • Kasutatakse valikut “väikesed kupüürid”
  • Sularahaautomaadil on limiidid väikeste kupüüride väljastamisel. Kui kliendi soovitud summa ületab vähima nominaali limiiti, antakse järgmine osa välja suurema nominaaliga kupüürides.
  • Limiidid
    • 5€ kupüüre maksimaalselt 25€
    • 10€ kupüüre maksimaalselt 50€
    • 20€ kupüüre maksimaalselt 100€
    • 50€ kupüüre maksimaalselt 500€
    • 100€ kupüüre maksimaalselt 1000€
    • Ülejäänud antakse välja 200€ kupüüridena
  • Näiteks:
    • 25€ -> 5×5€
    • 30€ -> 1×10€ + 4×5€
    • 35€ -> 1×10€ + 5×5€

Variatsioon 2: Võimalikult ühtlane jaotus

  • Raha väljastamiseks kasutatakse ideed, et kupüüride jaotus peaks olema võimalikult ühtlane. Erinevus kupüüride arvus peaks olema maksimaalselt 1 suurima ja vähima kogusega kupüüride vahel.
  • Nt:
    • 40€ -> 1×20€ + 1×10€ + 2×5€
    • 45€ -> 1×20€ + 2×10€ + 1×5€
    • 1500€ -> 2×500 €+ 1×200€+ 2×100€ + 1×50€ + 1×20€ + 2×10€ + 2×5€
    • 2000€ -> 2×500 €+ 3×200€+ 2×100€ + 2×50€ + 3×20€ + 3×10€ + 2×5€

Algoritm 3: Negatiivsete ja positiivsete arvude ümberjärjestus

  • Sisendiks on N pikkusega täisarvudest koosnev massiiv
  • Järjesta massiivi liikmed ümber sedasi, et esmalt oleksid massiivis negatiivsed arvud, millele järgneksid positiivsed arvud.
  • Arvude endi esinemisjärjekorda muuta ei tohi.
  • Nt:
    Algne: 5, -7, -87, -221, 7, 97, 1, -5, 5
    Tulemus: -7, -87, -221, -5, 5, 7, 97, 1, 5

Variatsioon 1: Arv 0 kaasatakse positiivsete arvude hulka

Variatsioon 2: Arv 0 esinemisel likvideeritakse kõik sellised arvud massiivist. Tulemus võib olla lühem sisendist.

Variatsioon 3: Arv 0 kõik esinemised paigutatakse massiivi lõppu

Algoritm 4: Kaupade sorteerimiskeskus

  • Ettevõtte struktuuris on 2 väikest ladu (ladu A ja ladu B) kuhu kogutakse pakid kokku ning saadetakse edasi sorteerimiskeskusse.
  • pakid on kujutatud täisarvuliste numbritena, mis tähistavad paki kaalu kilogrammides.
  • Sorteerimiskeskuses pannakse kõik pakid kokku ning sorteeritakse ära. Sorteerimiskeskusest väljuvad kaubad alates kõige raskemast.
  • Nt:
    • Ladu A: 7, 59, 1, 93, 15, 27, 48, 6
    • Ladu B: 9, 3, 1, 94
    • Väljumisjärjekord sorteerimiskeskusest: 94, 93, 59, 48, 27, 15, 9, 7, 6, 3, 1, 1

Algoritm 5: Postipaki suhted

  • Failist loetakse postipakkide kaalud ja vöötkoodid
  • Leia ja väljasta ekstreemväärtused ( kõige raskeim ja kergeim pakk) ning seejärel kõigi pakkide suhe ekstreemväärtusse
  • Väljasta pakid suhtega ekstreemväärtustesse, näita koos tootekoodiga
  • Nt:
    • Kaalud: 6, 7, 2, 10, 4
    • Vöötkoodid: EE790A1, EE001A1, EE117CA, EE000A2, EE01010
    • Leitud ekstreemväärtused: minimaalne 2kg, maksimaalne 10kg
    • Pakk EE790A1 suhted on 3.0 ja 0.6
      Pakk EE001A1 suhted on 3.5 ja 0.7
      Pakk EE117CA suhted on 1.0 ja 0.2
      jne

Algoritm 6: Vähima arvu aluse leidmine

  • Klaviatuurilt sisestatakse 4-kohalisi sõnesid
  • Leia vähim võimalik arvu alus igale sõnele lähtuvalt etteantud valimist: 2-ndsüsteemi arvud, 16-ndsüsteemiarvud. Märgi ka ära millised neist arvudest ei sobi ühtegi eelmainitud gruppi.
  • Nt: 0110, AZY1, 001F, 0101, 0Y24

Algoritm 7: Kümnendsüsteemi arvu teisendamine soovitud arvusüsteemi

  • Klaviatuurilt loetakse järjest kümnendsüsteemi arve kuniks kasutaja sisestab numbri 0, mis lõpetab lugemise.
  • Klaviatuurilt loetakse uus arvu alus (arvusüsteem)
  • Kõik loetud arvud teisendatakse uuele alusele ja väljastatakse kõrvuti algselt sisestatud arvuga

Algoritm 8: Kahendsüsteemi arvude teisendamine

  • Failist loetakse kahendsüste5emi arve pikkusega 4 baiti
  • Loetud arvud teisendatakse 16ndsüsteemi arvudeks
  • Saadud tulemused salvestatakse uude faili, esitatuna kõrvuti algsete kahendsüsteemi arvudega. Üks arv rea kohta.

Algoritm 9: Kuupäevade kontroll

  • Failist loetakse kuupäevasid mis on kujutatud 8-kohaliste täisarvudena
  • Kuupäevad vastavad Gregoriuse kalendrile.
  • Tuvastada ja väljastada millised neist on reaalsed ning millised ebareaalsed kuupäevad.
  • Arvestada tuleb liigaastaga
  • nt: 27041998, 29022003, 58042013, 04132013

Algoritm 10: Maatriksist tulemuste leidmine

  • Koosta maatriks A(m * n) , kus n > 5, m > 5. Maatriks täidetakse juhuarvudega -100 ≤ ai ≤ 100.
  • Leia järgmised tulemused
    • Viimase rea negatiivsete arvude summa
    • Kolmandast tulbast paremale poole jäävate tulpade positiivsete arvude summad, iga tulba kohta üks summa.
    • Neljandast reast ülevalpoole jäävate ridade negatiivsete arvude korrutised, igast reast eraldi korrutis.
  • Kuva kõik leitud tulemused

Algoritm 11: Maatriksi veerukaupa väljastus

  • Klaviatuurilt loetakse maatriks A(m * n)
  • Kehtivad tingimused n > 5, m > 5
  • Maatriksi A sisu kopeeritakse veerukaupa vektorisse B
  • Ekraanile kuvatakse vektori B abil maatriksi A sisu, üks veerg korraga.

Algoritm 12: Tähtede esinemissagedus ja lausete arv

  • Failist loetakse sisse tekst (nt raamat või ajaleheartikkel).
  • Leia ja väljasta tähtede esinemissagedused
    • Statistika ei arvesta tõstutundlikkust, st tulemustes ei eristata nt a ja A tähte, vaid loetakse mõlemate esinemised ühe summana.
  • Leia mitu lauset oli tekstis. Lause lõppu võivad tähistada märgid punkt, hüüumärk või küsimärk.

Algoritm 13: Tähe asendus

  • Failist loetakse sisse novell
  • Failis olevas tekstis sooritatakse järgmised tähemärkide asendused:
    • a -> u
    • u -> a
  • Ekraanile väljastatakse sooritatud asenduste arv
  • Uuendatud novelli sisu salvestatakse samasse faili tagasi.