Zadatak 1. Napisati program koji
će iz
datoteke pročitati imena i prezimena studenata i upisati ih po abecedi
(po
prezimenima) u listu čiji je element oblika ime (20 znakova), prezime
(20
znakova), broj zadatka (kratki cijeli broj). Broj studenata nije
unaprijed zadan nego ovisi o broju zapisa u
ulaznoj datoteci. Vrijednost varijable
broj zadatka za svaki element liste mora biti od 1 do N (N se
zadaje tijekom izvođenja programa i ne smije biti unaprijed zadan) i
treba
ju upisati (svaki broj samo jednom, bez ponavljanja istih brojeva) u
listu koristeći generator slučajnih brojeva (npr.
ako je prvi generirani broj 17 tada taj broj ide uz
studenta koji je prvi po redu itd). Tako
dobivenu listu
treba ispisati u obliku: prezime, ime, zadatak.
Zadatak 2. Napraviti program koji
će veliki
broj puta (recimo milijun ili više) generiranjem slučajnih brojeva
(koji
odgovaraju broju točkica na kockama, dakle od 1 do 6) simulirati
bacanje pet jednakih kockica. Iz dobivenih rezultata odrediti
vjerojatnost da
točno tri kockice padnu tako da pokazuju isti broj točkica
(znači da imamo tri jedinice ili tri dvojke ili … tri šestice).
Usporediti dobiveni rezultat s rezultatom koji daje
teorija vjerojatnosti.
Zadatak 3. Napravite program u
kojem je izvedena hrpa pomoću pokazivača.
Elementi hrpe su generirani slučajni brojevi, čiji se broj određuje na
početku izvršavanja programa i ne smije biti ograničen. Od tih brojeva
je potrebno izgraditi minimalnu i maksimalnu hrpu, te dobivene hrpe
ispisati.
Zadatak 4. Napraviti program u
kojem generator
slučajnih brojeva daje niz podataka tipa ASCII znak duljine 3 koji
odgovaraju malim i
velikim
slovima engleske abecede. Broj podataka nije unaprijed određen
nego se zadaje na početku izvršavanja programa. Dobiveni niz podataka
treba
sortirati uzlazno upotrebom mjehuričastog
sortiranja (bubble sort).
Napisati funkciju koja algoritmom binarnog pretraživanja pronalazi da
li se i
na kojem mjestu u sortiranom nizu podataka nalazi zadani niz ASCII
znakova duljine 3. Također napisati funkciju
koja
to isto radi algoritmom linearnog pretraživanja. Usporediti
aposteriorna
vremena izvršavanja pretraživanja sortiranog niza znakova za linearno i
binarno
pretraživanje.
Zadatak 5.
Na predavanjima smo obrađivali apstraktni tip podataka RJEČNIK i
prikazali ga kao podvrstu apstraktnog tipa podataka SKUP za koji su
definirane
samo četiri osnovne operacije: MAKE_NULL(), INSERT(), DELETE() i
MEMBER().
Pokazali smo njegovu izvedbu pomoću binarnog stabla traženja gdje je
binarno stablo izvedeno pomoću pokazivača. Napisati funkcije za
gornje četiri operacije kada je element rječnika niz znakova duljine
20. Broj elemenata u rječniku nije unaprijed određen nego se zadaje
na početku izvršavanja programa ovisno o broju podataka koji se unose u
rječnik učitavanjem iz ulazne datoteke. Ti podaci se mogu mijenjati
brisanjem postojećih i ubacivanjem novih nizova znakova. Na kraju
izvršavanja programa treba sve podatke pospremiti u novu izlaznu
datoteku.
Zadatak 6. Napisati
program u kojem se napravi lista pomoću pokazivača čiji su
elementi cijeli brojevi. Broj elemenata u listi nije unaprijed zadan
već
se učita na početku izvršavanja programa. Lista se puni pomoću
generatora slučajnih brojeva. Napisati funkciju koja će sortirati
listu upotrebom algoritma sortiranja spajanjem (merge
sort). Listu treba sortirati uzlazno (od
najmanjeg
prema najvećem elementu). Ispisati početnu listu i sortiranu listu.
Zadatak 7. Napisati program u
kojem se napravi
lista pomoću polja čiji su elementi realni brojevi. Broj elemenata u
listi nije unaprijed zadan već se učita na početku izvršavanja
programa. Lista se puni pomoću generatora slučajnih brojeva. Napisati
funkciju koja će sortirati listu upotrebom algoritma sortiranja
spajanjem
(merge sort).
Listu treba
sortirati uzlazno (od najmanjeg prema najvećem elementu) i silazno (od
najvećeg prema najmanjem elementu). Ispisati početnu listu i
sortirane liste.
Zadatak 8. Napisati program za
zbrajanje dva
polinoma prikazanih u obliku p(x) = c1xe1
+ c2xe2
+ … + cn xen
gdje su eksponenti e1 > e2 > … > en ≥ 0
cijeli
brojevi, a koeficijenti ci realni brojevi. Polinome
prikazati
vezanom listom uz upotrebu pokazivača tako da i-ta ćelija liste
sadrži eksponent ei,
koeficijent ci
i pokazivač na sljedeću ćeliju. Na početku programa unose
se red (maksimalna potencija x-a) i vrijednosti koeficijenata za svaki
polinoma. Ispisati dvije početne liste i listu rezultat nastalu
zbrajanjem
polinoma.
Zadatak 9. Napisati program koji
izgradi binarno
stablo traženja upotrebom polja. Broj čvorova stabla nije unaprijed
određen nego se zadaje na početku programa. U čvorove binarnog
stabla zapisuju se realni brojevi dobiveni upotrebom generatora
slučajnih
brojeva. Napisati funkciju koja prebroji listove, funkciju koja
prebroji
unutrašnje čvorove binarnog stabla i funkciju koja odredi maksimalnu
dubinu binarnog stabla. Ispisati stablo u inorder,
preorder i postorder
algoritmu.
Zadatak 10. Napisati program koji izgradi binarno stablo traženja upotrebom pokazivača (svaki čvor sadrži pokazivače na lijevo i desno dijete čvora). Broj čvorova stabla nije unaprijed određen nego se zadaje na početku programa. U čvorove binarnog stabla zapisuju se cijeli brojevi dobiveni upotrebom generatora slučajnih brojeva. Napisati funkciju koja prebroji listove, funkciju koja prebroji unutrašnje čvorove binarnog stabla i funkciju koja odredi maksimalnu dubinu binarnog stabla. Ispisati stablo u inorder algoritmu.
Izračunavanje
svake od gornjih suma je potrebno
obaviti u posebnoj funkciji, a za
svaku od suma je potrebno napisati funkciju koja računa sumu
rekurzivnim i nerekurzivnim postupkom.
Zadatak 13. Koristeći Eratostenov
algoritam napraviti program koji će za bilo koji upisani prirodni broj
N odrediti da li je prim broj. U programu treba koristiti polje bitova,
a ne polje cijelih brojeva kao na primjeru napravljenom na vježbama.
Maksimalna vrijednost prirodnog broja N nesmije biti ograničena, pa je
potrebno koristiti dinamičko rezerviranje memorije - funkcija malloc().
Zadatak 14. Napisati program za izvedbu liste pomoću pokazivača.
Elementi liste su cijeli brojevi dobiveni generatorom slučajnih
brojeva. Listu je potrebno sortirati uzlazno, te zatim elemente iz te
liste prebaciti u druge dvije liste tako da jedna sadrži samo parne, a
druga samo neparne brojeve iz početne liste. Ispisati sve liste.
Veličina lista nije unaprijed zadana i ograničena, već se određuje
tijekom izvršavanja programa.
Zadatak 15. Napisati program u kojem će se usporediti brzine odvijanja
soriranja brzim algoritmom (Quick Sort) za četiri različita načina
izbora pivot elementa (stožera): 1) kada je stožer uvijek prvi element
niza 2) kada je stožer srednji po veličini od prvog, srednjeg i zadnjeg
elementa 3) kada je stožer element uzet sa slučajno izabrane pozicije u
nizu 4) kada je stožer srednji po veličini od tri elementa uzetih sa
slučajno izabranih pozicija. Elementi niza su cijeli brojevi, a duljina
niza nije unaprijed zadana ni ograničena, nego se zadaje na početku
izvršavanja programa. Provjeriti ispravnost sortiranja u sva četiri
slučaja uspoređivanjem sortiranih nizova.
Zadatak 16. Napisati program koji
izgradi binarno
stablo traženja upotrebom polja. Broj čvorova stabla nije unaprijed
određen nego se zadaje na početku programa. U čvorove binarnog
stabla zapisuju se alfabetski znakovi (samo slova engleske abecede,
relacija manji-veći je definirana rasporedom slova u abecedi) dobiveni
upotrebom generatora slučajnih
brojeva. Napisati funkciju koja prebroji čvorove sa samo jednim
djetetom,
funkciju koja prebroji čvorove s dvoje djece i funkciju koja odredi
minimalnu dubinu binarnog stabla. Ispisati stablo u inorder, preorder i postorder
algoritmu.
Zadatak 17. Napisati program koji
izgradi binarno
stablo traženja upotrebom pokazivača (svaki čvor sadrži oznaku i
pokazivače na lijevo i desno dijete čvora). Broj čvorova stabla
nije unaprijed određen nego se zadaje na početku programa. U
čvorove binarnog stabla zapisuju se alfabetski znakovi (samo slova
engleske abecede, relacija manji-veći je definirana rasporedom slova u
abecedi) dobiveni
upotrebom
generatora slučajnih brojeva. Napisati funkciju koja prebroji čvorove
sa samo jednim djetetom, funkciju koja prebroji čvorove s dvoje djece i
funkciju koja odredi minimalnu dubinu binarnog stabla. Ispisati stablo
u inorder, preorder i postorder algoritmu.
Zadatak 18. Napisati program u
kojem se lista
cijelih brojeva sortira upotrebom binarnog stabla traženja uzlazno (od
najmanjeg prema najvećem elementu) i silazno (od najvećeg prema
najmanjem) upotrebom istog binarnog stabla traženja. Lista sadrži
cijele
brojeve koje daje generator slučajnih brojeva. Broj elemenata liste
nije
unaprijed određen nego se zadaje na početku programa. Binarno stablo
traženja izvesti upotrebom polja, a izvedbu liste izaberite sami (polje
ili
pokazivači). Ispisati početnu listu i sortiranu listu.
Zadatak 19. Napisati program u
kojem se lista alfabetskih
znakova (samo slova engleske abecede, relacija manji-veći je definirana
rasporedom slova u abecedi) sortira upotrebom binarnog stabla traženja uzlazno (od
najmanjeg prema najvećem elementu) i silazno (od najvećeg prema
najmanjem) upotrebom istog binarnog stabla traženja. Lista sadrži
alfabetske znakove koje daje generator slučajnih brojeva. Broj
elemenata liste nije
unaprijed određen nego se zadaje na početku programa. Binarno stablo
traženja izvesti upotrebom pokazivača, a izvedbu liste izaberite sami
(polje ili pokazivači). Ispisati početnu listu i sortiranu listu.
Zadatak 21. Na
predavanjima smo
obrađivali
apstraktni tip podataka PRIORITETNI RED za koji su definirane četiri
osnovne operacije: MAKE_NULL(), EMPTY(), INSERT(), DELETE_MIN() i
pokazali kako
se može izvesti pomoću hrpe. Napisati funkcije za gornje četiri
operacije kada se element prioritetnog reda sastoji od cijelog broja
koji
označava prioritet (veći broj znači veći prioritet) i niza
znakova duljine 4. Broj elemenata u prioritetnom redu nije unaprijed
određen nego ovisi o broju podataka koji se učitavaju iz ulazne
datoteke. Napisati funkciju MEMBER() koja određuje da li se neki niz
znakova nalazi u prioritetnom redu i ako da koji je prioritet tog
elementa, a
ukoliko se zadani niz ne nalazi u prioritetnom redu treba o tome
obavijestiti.
Zadatak 22. Na predavanjima smo
pokazali tri
različita algoritma za računanje vrijednosti polinoma u zadanoj
točci (najjednostavnijom upotrebom matematičke definicije polinoma,
poboljšanim algoritmom koji posprema međurezultate potenciranja i Hornerov algoritam). Napisati funkcije koje
računaju
vrijednost polinoma za svaki od ovih algoritama. Red polinoma
(maksimalna
potencija x-a) i koeficijenti polinoma se unose na početku izvršavanja
programa. Usporediti aposteriorna vremena izvršavanja ova tri algoritma
na
velikom skupu ulaznih podataka koji predstavljaju polinome različite
duljine i odrediti kolika je ušteda na vremenu izvršavanja Hornerovog
algoritma prema ostala dva algoritma za različite duljine polinoma.
Zadatak 23. Napisati program u
kojem se napravi
lista pomoću pokazivača čiji su elementi cijeli brojevi. Broj
elemenata u listi nije unaprijed zadan već se učita na početku
izvršavanja programa. Lista se puni pomoću generatora slučajnih
brojeva. Napisati funkciju koja će sortirati listu upotrebom algoritma
sortiranja
umetanjem (Insertion Sort)
i funkciju koja će sortirati upotrebom mjehuričastog
sortiranja (Bubble Sort).
Listu treba sortirati uzlazno. Ispisati početnu
listu i sortirane liste, te provjeriti ispravnost sortiranja oba
algoritma tako da se usporede elementi sortiranih lista.
Zadatak 24. Napisati program u
kojem se napravi
lista pomoću polja čiji su elementi cijeli brojevi. Broj elemenata u
listi nije unaprijed zadan već se učita na početku izvršavanja
programa. Lista se puni pomoću generatora slučajnih brojeva. Napisati
funkciju koja će sortirati listu upotrebom algoritma sortiranja
umetanjem
(Insertion sort)
i funkciju
koja će sortirati upotrebom Shellovog
sortiranja.
Listu treba sortirati uzlazno (od najmanjeg prema najvećem elementu) i
silazno (od najvećeg prema najmanjem elementu). Ispisati početnu
listu i sortirane liste, te provjeriti ispravnost sortiranja oba algoritma tako da se
usporede elementi sortiranih lista.
Zadatak 26. Napraviti program u
kojem se red realizira upotrebom
pokazivača. Svaki element reda sadrži cijeli broj, realni broj i niz od 10 znakova. Treba napisati funkciju koja dodaje i funkciju koja briše element iz reda, te
funkciju za ispis elementa na kojem se obavlja operacija. Ako je operacija uspjela, funkcija vraća vrijednost
Zadatak 27. Napraviti program u
kojem se red
ostvaruje upotrebom cirkularnog polja. Svaki element reda sadržava
cijeli broj
i niz znakova duljine 5. Napisati funkciju koja dodaju element u red,
funkciju
koja briše element iz reda te funkciju za ispis elementa na kojem se
obavlja
operacija. Ako je operacija uspjela, funkcija vraća vrijednost
Zadatak 28. Napraviti program u
kojem se od
ulaznih podataka koje čine cijeli broj i niz od 3 znaka izgradi hrpa,
gdje je ključ za oblikovanje hrpe cijeli broj. Zatim napraviti silazno
(od
najvećeg prema najmanjem elementu) sortiranje podataka prema
vrijednosti
cijelog broja upotrebom sortiranja pomoću hrpe. Ispisati niz ulaznih
podataka i niz podataka nakon sortiranja, gdje je potrebno ispisati
obje
varijable (int i char) u podatku.
Zadatak 29. Napisati funkciju za punjenje binarnog stabla traženja u čije čvorove treba upisati: cijeli broj, niz od
3
znaka
i realni broj. Stablo treba sortirati po cijelom broju; lijevo manji, desno veći. Sami izaberite izvedbu
binarnog stabla traženja (polje ili pokazivači). Napisati funkciju za ispis elemenata za koju je ulazni argument korijen stabla, a ispis treba biti poredan po vrijednosti cijelog broja od najvećeg do najmanjeg. Napisati funkciju koja ispiše
sve elemente binarnog stabla za koje je realni broj veći od neke
određene
vrijednosti koja se unese u glavnoj funkciji programa tijekom
izvršavanja, te
funkciju koja ispiše sve elemente binarnog stabla za koje niz znakova
počinje nekim određenim slovom koje se zadaje tijekom izvršavanja
programa.
Zadatak 30. U memoriji napraviti
binarno stablo
traženja u čije čvorove se upisuju 2 podatka: prvi tipa int i drugi
tipa float. Sami izaberite izvedbu
binarnog stabla
traženja (polje ili pokazivači). Stablo se sortira prema cjelobrojnom
podatku (lijevo manji, desno veći). Ispisati stablo po algoritmu
INORDER.
Napisati funkcije MIN() i MAX(), čiji su ulazni argument korijen
stabla, koje
u najmanjem mogućem broju koraka moraju naći i ispisati zapise koji
odgovaraju najmanjoj i najvećoj cjelobrojnoj vrijednosti (nije
dopušteno
pročitati zapise u svim čvorovima). U programu zatim izbrisati
čvorove koji odgovaraju tim zapisima te ispisati tako nastalo stablo u
INORDER algoritmu. Napisati funkciju koja izračuna i ispiše prosječnu
vrijednost varijable tipa float u stablu.
Zadatak 31. Koristeći Eratostenov algoritam napisati program koji će za bilo koji upisani prirodni broj provjeriti da li je prim broj te ako nije prikazati ga kao umnožak prim brojeva (dakle n = p1*p2*…*pk gdje su pi prim brojevi). Provjeriti da li je takav prikaz jedinstven, tj. da li postoji neki drugi niz prim brojeva qi za koje umnožak q1*q2*…*qj daje n.
Zadatak 32. Napraviti program u kojem se oblikuje linearna jednostuko povezana lista upotrebom
pokazivača u čije su čvorove upisani: realni broj, niz od 10 znakova i cijeli broj. Lista je poredana uzlazno prema vrijednosti realnog broja. Napisati funkciju za pronalaženje i ispis članova liste kojima je realni broj u nekom području
zadanom tijekom izvršavanja programa. Ulazni argumenti su glava liste i cijeli broj, a funkcija treba ispisati sve tri varijable zapisane u čvoru (float, char i int). Funkcija vraća rezultat 0 ako realni broj nije nađen, a 1 ako jest.
Zadatak 33. Napisati funkcije za dodavanje i skidanje elementa u stog realiziran poljem. Maksimalan broj zapisa
nije unaprijed određen nego se zadaje na početku programa. U glavnom
programu izvesti učitavanje podataka za element stoga kao i ispisivanje
elementa stoga koji je skinut (npr. unijeti
nekoliko
elemenata u stog, a zatim skinuti i ispisati svaki element sve dok stog
ne
ostane prazan). Element stoga čine: cijeli broj (int), niz znakova
duljine 10 (char), realni broj (float)
i kratki cijeli broj (short).
Zadatak 34. Napisati funkcije za dodavanje i skidanje elementa u stog realiziran pokazivačima. Maksimalan broj zapisa
nije unaprijed određen nego se zadaje na početku programa. U glavnom
programu izvesti učitavanje podataka za element stoga kao i ispisivanje
elementa stoga koji je skinut (npr. unijeti
nekoliko
elemenata u stog, a zatim skinuti i ispisati svaki element sve dok stog
ne
ostane prazan). Element stoga čine: cijeli broj (int), niz znakova
duljine 10 (char), realni broj (float)
i niz znakova duljine 15 (char).
Zadatak 35. Napraviti program koji
će u memoriji oblikovati linearnu listu upotrebom
pokazivača. U pojedini čvor liste se upisuje: cijeli broj, niz znakova duljine 10, kratki cijeli broj, realni broj i pokazivač na sljedeći čvor. Napisati funkciju koja
će iz liste ispisati sve zapise koji sadrže neku zadanu vrijednost
kratkog
cijelog broja. Napisati funkciju koja će izračunati prosječnu
vrijednost realnog broja u svim čvorovima.
Zadatak 36. Izraditi program za
punjenje,
brisanje, pretraživanje i ispis dvostruko povezane liste (liste u kojoj
svaki
čvor uz element sadrži pokazivač na prethodni i sljedeći čvor). Element
liste sadržava cijeli broj i realni broj. Lista se oblikuje prema
cijelom
broju (to je ključ), novi element se unosi u listu tako da su cijeli
brojevi sortirani uzlazno, a elementi se brišu i pretražuju po
vrijednosti
cijelog broja. Funkcija za ispis elemenata u listi mora ispisati obje
varijable
koje čine element: cijeli broj i realni broj.
Zadatak 37. Izraditi program za
punjenje,
brisanje, pretraživanje i ispis jednostruko povezane liste s dva ključa
čiji element sadržava cijeli broj (prvi ključ), realni broj (drugi
ključ) i niz od 5 znakova. Dakle, u svaki čvor se upisuju: int
varijabla, float varijabla, char
duljine 5 varijabla, pokazivač na sljedeći element po int varijabli,
pokazivač na sljedeći element po float
varijabli. Listu treba složiti po rastućem cijelom broju i rastućem
realnom broju (podaci su zapisani samo jednom), element liste se briše
i
pretražuje po oba ključa, tj. može se
pretraživati i brisati element i po vrijednosti int i po float
varijable. Funkcija za ispis treba ispisivati element sortirane po oba
ključa, po int i po float varijabli, te za
svaki
element mora ispisati sve tri zapisane varijable (int, float
char).
Zadatak 39. Napraviti program u
kojem generator
slučajnih brojeva daje niz cijelih brojeva. Broj generiranih cijelih
brojeva ne smije biti unaprijed ograničen nego se zadaje na početku
izvršavanja programa. Ulazni niz cijelih brojeva treba sortirati pomoću
sortiranja umetanjem (insertion sort),
sortiranja spajanjem (merge sort)
i brzim sortiranjem (quick sort).
Usporediti apriorna vremena izvršavanja ovih algoritama. Usporediti
aposteriorna
vremena sortiranja ovih algoritama na velikom skupu ulaznih nizova
različite duljine i odrediti koji je najefikasniji za kraće nizove do
1000 brojeva, a koji za nizove dulje od 100000 brojeva. Za usporedbu
efikasnosti upotrijebiti sve algoritme sortiranja na identičnim ulaznim
podacima. Provjeriti ispravnost različitih algoritama sortiranja
uspoređivanjem izlaznih sortiranih nizova.
Zadatak 40. Napraviti program u kojem generator slučajnih brojeva daje niz cijelih brojeva. Broj generiranih cijelih brojeva ne smije biti unaprijed ograničen nego se zadaje na početku izvršavanja programa. Ulazni niz cijelih brojeva treba sortirati pomoću mjehuričastog sortiranja (bubble sort), sortiranja hrpom (heap sort) i brzim sortiranjem (quick sort). Usporediti apriorna vremena izvršavanja ovih algoritama. Usporediti aposteriorna vremena sortiranja ovih algoritama na velikom skupu ulaznih nizova različite duljine i odrediti koji je najefikasniji za kraće nizove do 1000 brojeva, a koji za nizove dulje od 100000 brojeva. Za usporedbu efikasnosti upotrijebiti sve algoritme sortiranja na identičnim ulaznim podacima. Provjeriti ispravnost različitih algoritama sortiranja uspoređivanjem izlaznih sortiranih nizova.
Zadatak 42. Napraviti program u kojem generator slučajnih brojeva daje niz podataka tipa ASCII znaka duljine 4 koji sadrže mala i velika slova engleske abecede. Broj generiranih podataka ne smije biti unaprijed ograničen nego se zadaje na početku izvršavanja programa. Ulazni niz podataka treba sortirati pomoću Shellovog sortiranja, sortiranja hrpom (heap sort) i brzim sortiranjem (quick sort). Usporediti apriorna vremena izvršavanja ovih algoritama. Usporediti aposteriorna vremena sortiranja ovih algoritama na velikom skupu ulaznih nizova podataka različite duljine i odrediti koji je najefikasniji za kraće nizove do 50 podataka, a koji za nizove dulje od 50000 podataka. Za usporedbu efikasnosti upotrijebiti sve algoritme sortiranja na identičnim ulaznim podacima. Provjeriti ispravnost različitih algoritama sortiranja uspoređivanjem izlaznih sortiranih nizova.
Zadatak 43. Usporediti aposteriorna
vremena
izvršavanja punjenja generiranim slučajnim realnim brojevima
jednostruke
linearne liste u padajućem nizu za slučajeve izvedbe liste
pomoću polja i pomoću pokazivača. Usporediti vremena izvršavanja
za kraće nizove (do 100 brojeva) i dugačke znakove (100000 brojeva)
tako
da se identičnim nizom brojeva pune obje liste.
Zadatak 44. Napisati program u
kojem
se napravi
lista pomoću polja čiji su elementi cijeli brojevi. Broj
elemenata u listi nije unaprijed zadan već se učita na početku
izvršavanja programa. Lista se puni pomoću generatora slučajnih
brojeva. Napisati funkciju koja će sortirati listu upotrebom algoritma
brzog
sortiranja (quick sort)
koji za pivot elemenat izabere medijan od tri elementa na slučajno
izabranim pozicijama.
Listu treba sortirati silazno (od najvećeg prema najmanjem elementu).
Ispisati početnu
listu i sortiranu listu.
Zadatak 45. Napisati program u
kojem se napravi
lista pomoću polja čiji su elementi realni brojevi. Broj elemenata u
listi nije unaprijed zadan već se učita na početku izvršavanja
programa. Lista se puni pomoću generatora slučajnih brojeva. Napisati
funkciju koja će sortirati listu upotrebom algoritma brzog sortiranja (quick sort) koji za pivot elemenat izabere
medijan od tri elementa na slučajno izabranim pozicijama. Listu
treba
sortirati uzlazno (od najmanjeg prema najvećem elementu) i silazno (od
najvećeg prema najmanjem elementu). Ispisati početnu listu i
sortiranu listu.
Zadatak 48. Napisati program koji
rješava 0/1 problem ranca (vidjeti predavanja). Zadano je n predmeta
(nije unaprijed zadan broj nego se određuje na početku izvršavanja
programa) O1, ..., On te njihove težine wi
i vrijednosti pi. Kapacitet ranca je c težinskih jedinica.
Težine i vrijednosti predmeta, te kapacitet ranca su pozitivne realne
veličine. Program treba odrediti koje predmete treba staviti u ranac
tako da njihova ukupna vrijednost bude maksimalna. Predmeti se uzimaju
cijeli ili se ne uzimaju.
Zadatak 49. Napisati program za izvedbu apstraktnog tipa podataka Skup pomoću bit-vektora. Potrebno je napisati funkcije za operacije MAKE_NULL(), INSERT(), DELETE(), MEMBER(), MIN(), MAX(), SUBSET(), UNION(), INTERSECTION() i DIFFERENCE(). Elementi skupova su cijeli brojevi između 1 i N (gdje je N broj koji nije unaprijed ograničen i zadaje se na početku izvođenja programa) dobiveni generiranjem slučajnih brojeva.
Zadatak 50. Napisati
program koji rješava kontinuirani problem ranca (vidjeti predavanja).
Zadano je n predmeta (nije
unaprijed zadan broj nego se određuje na početku izvršavanja programa) O1,
..., On te njihove težine wi i vrijednosti pi.
Kapacitet ranca je c težinskih jedinica. Težine i vrijednosti predmeta,
te kapacitet ranca su pozitivne realne veličine. Program treba odrediti
koje predmete i koji njihov dio treba staviti u ranac tako da njihova
ukupna vrijednost
bude maksimalna.