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!
- Algoritmi realisatsioon ei tohiks olla programmeerimiskeelest sõltuv. Eesmärk on lahendada ülesanne, kuid mitte kasutada ühele või teisele programmeerimiskeelele omast kirjapilti
- 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.