1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

Слични документи
Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Uvod u računarstvo 2+2

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Uvod u računarstvo 2+2

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

Uvod u računarstvo 2+2

Slide 1

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Državna matura iz informatike

Algoritmi SŠ P1

Funkcije predavač: Nadežda Jakšić

Tutoring System for Distance Learning of Java Programming Language

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

MathFest 2016 Krapinsko zagorske županije 29. travnja Terme Tuhelj Ekipno natjecanje učenika osnovnih škola Kategorija math 43 Natjecanje traje

Računarski praktikum I - Vježbe 01 - Uvod

ŽUPANIJSKO NATJECANJE IZ MATEMATIKE 28. veljače razred - rješenja OVDJE SU DANI NEKI NAČINI RJEŠAVANJA ZADATAKA. UKOLIKO UČENIK IMA DRUGAČIJI

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

Agencija za odgoj i obrazovanje Hrvatska zajednica tehničke kulture 58.ŠKOLSKO NATJECANJE MLADIH TEHNIČARA PISANA PROVJERA ZNANJA - 5. razred Za

Agencija za odgoj i obrazovanje Hrvatska zajednica tehničke kulture 57. ŽUPANIJSKO/KLUPSKO NATJECANJE MLADIH TEHNIČARA PISANA PROVJERA ZNANJA 5.

23. siječnja od 13:00 do 14:00 Školsko natjecanje / Osnove informatike Srednje škole RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovi

Microsoft Word - 6ms001

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

2015_k2_z12.dvi

070-ALIP2-udzbenik.indb

Funkcije predavač: Nadežda Jakšić

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ЗАВРШНИ ИСПИТ У ОСНОВНОМ ОБРА

(Microsoft Word - Dr\236avna matura - kolovoz osnovna razina - rje\232enja)

(Microsoft Word - Dr\236avna matura - svibanj osnovna razina - rje\232enja)

Računarski praktikum I - Vježbe 11 - Funktori

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

0255_Uvod.p65

JMBAG Ime i Prezime Mreže računala Završni ispit 16. veljače Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i službeni šalabahter.

Infokup - Školsko Osnovne škole Algoritmi BaPaCpp

Microsoft Word - Zadaci za samostalno vjezbanje 4.doc

OSNOVNA ŠKOLA, VI RAZRED MATEMATIKA

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

MATEMATIKA viša razina MATA.29.HR.R.K1.24 MAT A D-S MAT A D-S029.indd :30:29

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ПРОБНИ ЗАВРШНИ ИСПИТ школска

(Microsoft Word - Dr\236avna matura - rujan osnovna razina - rje\232enja)

(Microsoft Word - Dr\236avna matura - lipanj osnovna razina - rje\232enja)

Uvod u računarstvo 2+2

Microsoft Word - DIOFANTSKE JEDNADŽBE ZADACI docx

Sveucilište u Zagrebu

os07zup-rjes.dvi

Matematika 1 - izborna

(Microsoft Word - Rje\232enja zadataka)

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Uvod u statistiku

8 2 upiti_izvjesca.indd

JMBAG IME I PREZIME BROJ BODOVA 1. (ukupno 6 bodova) MJERA I INTEGRAL 1. kolokvij 4. svibnja (Knjige, bilježnice, dodatni papiri i kalkulatori n

Microsoft Word - mat_szerb_kz_1flap.doc

Microsoft Word - predavanje8

ALIP1_udzb_2019.indb

NIAS Projekt e-građani KORISNIČKA UPUTA za aplikaciju NIAS Verzija 1.1 Zagreb, srpanj 2014.

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ЗАВРШНИ ИСПИТ У ОСНОВНОМ ОБРА

Elementi praćenja i ocjenjivanja za nastavni predmet Matematika u 4. razredu Elementi praćenja i ocjenjivanja za nastavni predmet Matematika u 4. razr

Upute - JOPPD kreiranje obrasca

ŠKOLSKO/GRADSKO NATJECANJE IZ MATEMATIKE 21. siječnja razred-rješenja OVDJE SU DANI NEKI NAČINI RJEŠAVANJA ZADATAKA. UKOLIKO UČENIK IMA DRUGA

(Microsoft Word - Dr\236avna matura - kolovoz ni\236a razina - rje\232enja)

(Microsoft Word - Dr\236avna matura - studeni osnovna razina - rje\232enja)

CIJELI BROJEVI 1.) Kako još nazivamo pozitivne cijele brojeve? 1.) Za što je oznaka? 2.) Ispiši skup prirodnih brojeva! 3.) Kako označavamo skup priro

Programski jezik C

(Microsoft Word - MATB - kolovoz osnovna razina - rje\232enja zadataka)

INF INFORMATIKA INF.27.HR.R.K1.20 INF D-S INF D-S027.indd :50:41

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ЗАВРШНИ ИСПИТ У ОСНОВНОМ ОБРА

Програмирај!

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ЗАВРШНИ ИСПИТ У ОСНОВНОМ ОБРА

JMBAG IME I PREZIME BROJ BODOVA MJERA I INTEGRAL 2. kolokvij 29. lipnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) 1. (

Ekipno natjecanje Ekipa za 5+ - kategorija MIKRO Pula, Mikro-list 1 BODOVANJE: TOČAN ODGOVOR: 6 BODOVA NETOČAN ODGOVOR: -2 BODA BEZ ODGOVOR

Microsoft Word - 1_Uputstvo-za-ocenjivanje_ZI-2018_Matematika Jun.doc

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba

MATEMATIKA EKSTERNA PROVJERA ZNANJA UČENIKA NA KRAJU III CIKLUSA OSNOVNE ŠKOLE UPUTSTVO VRIJEME RJEŠAVANJA TESTA: 70 MINUTA Pribor: grafitna olovka i

ЕКОНОМСКИ ФАКУЛТЕТ УНИВЕРЗИТЕТА У ПРИШТИНИ КОСОВСКА МИТРОВИЦА

Algebarski izrazi (4. dio)

Logičke izjave i logičke funkcije

Ukupno bodova:

59. Natjecanje mladih tehničara Republike Hrvatske Školsko/Klupsko natjecanje godine Tehnička kultura 5. razred Maketarstvo i modelarstvo Radni

Microsoft Word - 15ms261

PowerPoint Presentation

ELEKTRONIKA

INF INFORMATIKA INF.35.HR.R.K1.24 INF D-S

Računarski praktikum I - Vježbe 09 - this, static

Matrice. Algebarske operacije s matricama. - Predavanje I

03 SUBP

3.Kontrlne (upravlja~ke) strukture u Javi

Smjernice za korištenje sustava online prijava Ukoliko imate pristupno korisničko ime i lozinku ili ste navedeno dobili nakon zahtjeva za otvaranje no

MAT B MATEMATIKA osnovna razina MATB.45.HR.R.K1.20 MAT B D-S

Државно такмичење године 5. и 6. разред 1. [pločice] Правоугаону терасу димензија d s центиметара квадратних треба поплочати коришћењем плочица

Na temelju članka 81. Zakona o znanstvenoj djelatnosti i visokom obrazovanju te članka 19. i članka 44. stavak 5. točke 4. Statuta Visoke poslovne ško

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ЗАВРШНИ ИСПИТ У ОСНОВНОМ ОБРА

Microsoft Word - 12ms121

I

PROCES KUPNJE ULAZNICE NA PORTALU ULAZNICE.HR Početak kupovine... 2 Plaćanje Mastercard karticom... 5 Plaćanje Maestro karticom... 8 Plaćanje American

Упутство за пријављивање испита путем интернета Да би студент могао да пријави испит путем интернета мора прво да се пријави. Пријављивање се врши у п

I

Транскрипт:

1 Rezultati i uvidi u kolokvije: Rezultati u petak 3.5. navečer na webu a uvidi u ponedjeljak 6.5. u 16 sati. Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje te službeni podsjetnik. Kalkulatori razne neslužbene tablice papiri i sl. nisu dozvoljeni! Mobitele isključite i spremite! Sva rješenja napišite isključivo na papire sa zadacima jer jedino njih predajete. Obavezno predajte sve papire sa zadacima čak i ako neke zadatke niste rješavali. Ne zaboravite se potpisati na svim papirima! Skice smijete raditi i na drugim papirima koje će vam dati dežurni asistent. U svim zadacima zabranjeno je korištenje dodatnih nizova i standardne matematičke biblioteke (zaglavlje math.h) osim ako je u zadatku drugačije navedeno. Dozvoljeno je pisanje pomoćnih funkcija. Zadatak 1. (20 bodova) Gusari su stigli s dva broda do otoka na kojem su sakrili blago. Svaka škrinja s blagom je numerirana brojem od 1 do n n 20. Gusari znaju da brodovi imaju nosivost k 1 i k 2 tona a i-ta škrinja ima masu m i tona. Međutim drugi brod ima pregrade u prostoru za teret tako da u njega možemo utovariti maksimalno n/4 škrinja. Napišite rekurzivnu funkciju koja će ispisati sve moguće načine za utovarivanje škrinja u ta dva broda s time da sve škrinje moraju biti utovarene. Dozvoljeno je da jedan od brodova bude prazan. Bitno je samo koja škrinja ide u koji brod a poredak utovara u pojedini brod nije bitan. Svaki način utovara treba ispisati u svom redu kao uređeni par od dva niza. Prvi niz su indeksi škrinja koje idu u prvi brod i analogno za drugi niz. Ako je neki niz prazan ne treba ispisati ništa na tom mjestu. Ako nema načina za utovar ne treba ispisati ništa. Primjer: Za nosivosti k 1 = 5 k 2 = 3 i 4 škrinje s masama m 1 = 1.0 m 2 = 1.5 m 3 = 2.0 m 4 = 2.5 svi mogući načini utovara su: (1 2 3 4) (1 2 4 3). Napomene: Smijete koristiti jedno polje realnih brojeva koje sadrži mase škrinja i jedno polje cijelih brojeva za spremanje informacija o škrinjama kod utovara. Ne smijete koristiti globalne varijable. Smijete koristiti pomoćne funkcije.

2 Zadatak 2. (20 bodova) Ekran nekog računala je matrica znakova char ekran[10][17] visine 10 a širine 17 znakova. Na ekranu može biti iscrtano više pravokutnih prozora. Svaki prozor iscrtan je pomoću nekog svog znaka različitog od. i od znaka za ostale prozore. Prozori se nikad ne preklapaju. Lokacije na kojima nema prozora sadrže znak.. Potrebno je implementirati sljedeće funkcije: (a) (4 boda) int moze(char ekran[10][17] int pi int pj int h int w) koja provjerava može li se na ekran dodati novi prozor čiji gornji lijevi kut stoji u ekran[pi][pj] a ima visinu h i širinu w gdje je h w > 0. Prozor se može dodati ukoliko je u potpunosti unutar ekrana te ukoliko se ne preklapa s drugim prozorima. (b) (8 bodova) void maksimum(char ekran[10][17] int pi int pj int *h int *w) koja preko varijabilnih parametara vraća dimenzije prozora najveće površine koji se može zauzeti tako da mu je gornji lijevi kut u ekran[pi][pj]. Ukoliko je dana lokacija već zauzeta u h i w sprema 1. (c) (8 bodova) void popuni(char ekran[10][17] char znak) koja na ekranu pronalazi pravokutni prostor najveće površine koji još nema prozor te na njega crta novi prozor pomoću znaka znak. Na primjer prva slika prikazuje ekran s dva prozora. Poziv funkcije moze(ekran 0 0 2 2) bi vratio 1 dok bi poziv moze(ekran 0 0 3 2) vratio 0 zbog preklapanja. Poziv funkcije maksimum(ekran 7 0 &k &l) bi u k spremio 3 a u l bi spremio 8. Konačno poziv popuni(ekran 1 ) bi rezultirao drugom slikom.......1111111111......1111111111.xxxxxx....xxxxxx1111111111.xxxxxx....xxxxxx1111111111.xxxxxx....xxxxxx1111111111.xxxxxx....xxxxxx1111111111.xxxxxx.bbbbbb....xxxxxx.bbbbbb......bbbbbb......bbbbbb......bbbbbb......bbbbbb.........

3 Zadatak 3. (20 bodova) Napišite funkciju void sort(double ***niznizova int m int n) koja prima niz od m dvodimenzionalnih nizova realnih brojeva (svaki od nizova je veličine n n) i sortira taj niz nizova uzlazno po zbroju svih elemenata dvodimenzionalnog niza. Primjerice jedan takav niz nizova gdje je m = 4 i n = 2 [ ] [ ] [ ] [ ] 1 2 10 0 1 1 0 1 0 0 0 0 1 1 1.5 0 potrebno je sortirati ovako: [ 1 1 1 1 ] [ 0 1 1.5 0 ] [ 1 2 0 0 ] [ 10 0 0 0 Napomena: Sve dodatne nizove koje koristite dinamički alocirajte pomoću funkcije malloc (ne trebate provjeravati uspješnost alokacije) i na kraju ih eksplicitno dealocirajte! ].

4 Zadatak 4. (15 bodova) Napišite funkciju zagradi koja prima string izraz u kojem je zapisana riječ. Funkcija treba provjeriti da li se u svakom početnom komadu te riječi znak a pojavljuje više ili jednako puta nego znak b pri čemu u cijeloj riječi treba biti jednak broj znakova a i b. Ako to vrijedi funkcija treba u stringu zamijeniti svaki znak a znakom ( te svaki znak b znakom ). U protivnom funkcija ne mijenja string. Kao vrijednost funkcija treba vratiti broj promijenjenih znakova te kroz varijabilni argument pokazivač na promijenjeni znak najvećeg indeksa ako takav postoji inače NULL. Ako je string duljine 0 funkcija treba vratiti 0 kao vrijednost te NULL kroz varijabilni argument. Napišite primjer poziva funkcije. Primjer: String "-aba-abb" zadovoljava traženi uvjet a string "-aba-bba" ne zadovoljava.

1 Rezultati i uvidi u kolokvije: Rezultati u petak 3.5. navečer na webu a uvidi u ponedjeljak 6.5. u 16 sati. Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje te službeni podsjetnik. Kalkulatori razne neslužbene tablice papiri i sl. nisu dozvoljeni! Mobitele isključite i spremite! Sva rješenja napišite isključivo na papire sa zadacima jer jedino njih predajete. Obavezno predajte sve papire sa zadacima čak i ako neke zadatke niste rješavali. Ne zaboravite se potpisati na svim papirima! Skice smijete raditi i na drugim papirima koje će vam dati dežurni asistent. U svim zadacima zabranjeno je korištenje dodatnih nizova i standardne matematičke biblioteke (zaglavlje math.h) osim ako je u zadatku drugačije navedeno. Dozvoljeno je pisanje pomoćnih funkcija. Zadatak 1. (20 bodova) Gusari su stigli s dva broda do otoka na kojem su sakrili blago. Svaka škrinja s blagom je numerirana brojem od 1 do n n 20. Gusari znaju da brodovi imaju nosivost k 1 i k 2 tona a i-ta škrinja ima masu m i tona. Međutim u drugi brod polako prodire voda tako da u njega možemo utovariti samo škrinje mase m i k 2 /5 tona. Napišite rekurzivnu funkciju koja će ispisati sve moguće načine za utovarivanje škrinja u ta dva broda s time da sve škrinje moraju biti utovarene. Dozvoljeno je da jedan od brodova bude prazan. Bitno je samo koja škrinja ide u koji brod a poredak utovara u pojedini brod nije bitan. Svaki način utovara treba ispisati u svom redu kao uređeni par od dva niza. Prvi niz su indeksi škrinja koje idu u prvi brod i analogno za drugi niz. Ako je neki niz prazan ne treba ispisati ništa na tom mjestu. Ako nema načina za utovar ne treba ispisati ništa. Primjer: Za nosivosti k 1 = 4 k 2 = 5 i 4 škrinje s masama m 1 = 0.5 m 2 = 1.0 m 3 = 1.5 m 4 = 2.0 svi mogući načini utovara su: (1 3 4 2) (3 4 1 2). Napomene: Smijete koristiti jedno polje realnih brojeva koje sadrži mase škrinja i jedno polje cijelih brojeva za spremanje informacija o škrinjama kod utovara. Ne smijete koristiti globalne varijable. Smijete koristiti pomoćne funkcije.

2 Zadatak 2. (20 bodova) Neko poljoprivredno polje reprezentirano je matricom znakova char polje[7][13]. Polje je podijeljeno na pravokutna zemljišta koja pripadaju različitim vlasnicima. Svako zemljište označeno je nekim svojim znakom različitim od = i od znaka za ostala zemljišta. Zemljišta se nikad neće preklapati. Dijelovi polja koji ne pripadaju nikome označeni su znakom =. Potrebno je implementirati sljedeće funkcije: (a) (4 boda) int isprobaj(char polje[7][13] int pi int pj int h int w) koja provjerava može li se na polje dodati novo zemljište čiji donji desni kut stoji u polje[pi][pj] a ima visinu h i širinu w gdje je h w > 0. Zemljište se može dodati ukoliko je u potpunosti unutar polja te ukoliko se ne preklapa s drugim zemljištima. (b) (8 bodova) void najvece(char polje[7][13] int pi int pj int *h int *w) koja preko varijabilnih parametara vraća dimenzije zemljišta najveće površine koje se može zauzeti tako da mu je donji desni kut u polje[pi][pj]. Ukoliko je dana lokacija već zauzeta u h i w sprema 1. (c) (8 bodova) void kupi(char polje[7][13] char znak) koja na polju pronalazi pravokutni prostor najveće površine koji još nema zemljište te na njega dodaje novo zemljište označeno znakom znak. Na primjer prva slika prikazuje polje s tri zemljišta. Poziv funkcije isprobaj(polje 4 6 2 2) bi vratio 1 dok bi poziv isprobaj(polje 4 6 2 3) vratio 0 zbog preklapanja. Poziv funkcije najvece(polje 6 2 &k &l) bi u k spremio 5 a u l bi spremio 3. Konačno poziv kupi(polje 1 ) bi rezultirao drugom slikom. $$$$========= $$$$=11111111 $$$$========= $$$$=11111111 ===%%======== ===%%11111111 ===%%==****** ===%%==****** ===%%==****** ===%%==****** ===%%==****** ===%%==****** ============= =============

3 Zadatak 3. (20 bodova) Napišite funkciju void sort(double ***niznizova int m int n) koja prima niz od m dvodimenzionalnih nizova realnih brojeva (svaki od nizova je veličine n n) i sortira taj niz nizova silazno po zbroju svih elemenata dvodimenzionalnog niza. Primjerice jedan takav niz nizova gdje je m = 4 i n = 2 [ ] [ ] [ ] [ ] 1 2 10 0 1 1 0 1 0 0 0 0 1 1 1.5 0 potrebno je sortirati ovako: [ 10 0 0 0 ] [ 1 2 0 0 ] [ 0 1 1.5 0 ] [ 1 1 1 1 Napomena: Sve dodatne nizove koje koristite dinamički alocirajte pomoću funkcije malloc (ne trebate provjeravati uspješnost alokacije) i na kraju ih eksplicitno dealocirajte! ].

4 Zadatak 4. (15 bodova) Napišite funkciju pregradi koja prima string zapis u kojem je zapisana riječ. Funkcija treba provjeriti da li se u svakom zadnjem komadu te riječi znak c pojavljuje manje ili jednako puta nego znak d pri čemu u cijeloj riječi treba biti jednak broj znakova c i d. Ako to vrijedi funkcija treba u stringu zamijeniti svaki znak c znakom { te svaki znak d znakom }. U protivnom funkcija ne mijenja string. Kao vrijednost funkcija treba vratiti broj promijenjenih znakova te kroz varijabilni argument pokazivač na promijenjeni znak najmanjeg indeksa ako takav postoji inače NULL. Ako je string duljine 0 funkcija treba vratiti 0 kao vrijednost te NULL kroz varijabilni argument. Napišite primjer poziva funkcije. Primjer: String "cdc-cdd-" zadovoljava traženi uvjet a string "dcc-cdd-" ne zadovoljava.

1 Rezultati i uvidi u kolokvije: Rezultati u petak 3.5. navečer na webu a uvidi u ponedjeljak 6.5. u 16 sati. Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje te službeni podsjetnik. Kalkulatori razne neslužbene tablice papiri i sl. nisu dozvoljeni! Mobitele isključite i spremite! Sva rješenja napišite isključivo na papire sa zadacima jer jedino njih predajete. Obavezno predajte sve papire sa zadacima čak i ako neke zadatke niste rješavali. Ne zaboravite se potpisati na svim papirima! Skice smijete raditi i na drugim papirima koje će vam dati dežurni asistent. U svim zadacima zabranjeno je korištenje dodatnih nizova i standardne matematičke biblioteke (zaglavlje math.h) osim ako je u zadatku drugačije navedeno. Dozvoljeno je pisanje pomoćnih funkcija. Zadatak 1. (20 bodova) Radnici ukrcavaju teret u dva kamiona. Svaka kutija s teretom je numerirana brojem od 1 do n n 20. Radnici znaju da kamioni imaju nosivost k 1 i k 2 kilograma a i-ta kutija ima masu m i kilograma. Međutim drugi kamion ima nosače za ceradu u prostoru za teret tako da u njega možemo utovariti maksimalno n/3 kutija. Napišite rekurzivnu funkciju koja će ispisati sve moguće načine za utovarivanje kutija u ta dva kamiona s time da sve kutije moraju biti utovarene. Dozvoljeno je da jedan od kamiona bude prazan. Bitno je samo koja kutija ide u koji kamion a poredak utovara u pojedini kamion nije bitan. Svaki način utovara treba ispisati u svom redu kao uređeni par od dva niza. Prvi niz su indeksi kutija koje idu u prvi kamion i analogno za drugi niz. Ako je neki niz prazan ne treba ispisati ništa na tom mjestu. Ako nema načina za utovar ne treba ispisati ništa. Primjer: Za nosivosti k 1 = 5000 k 2 = 3000 i 4 kutije s masama m 1 = 1000 m 2 = 1500 m 3 = 2000 m 4 = 2500 svi mogući načini utovara su: (1 2 3 4) (1 2 4 3). Napomene: Smijete koristiti jedno polje realnih brojeva koje sadrži mase kutija i jedno polje cijelih brojeva za spremanje informacija o kutijama kod utovara. Ne smijete koristiti globalne varijable. Smijete koristiti pomoćne funkcije.

2 Zadatak 2. (20 bodova) Neko skladište reprezentirano je matricom znakova char sklad[8][12]. Skladište je podijeljeno na pravokutne zone u kojima se čuvaju razni artikli. Svaka zona označena je nekim svojim znakom različitim od i od znaka za ostale zone. Zone se nikad ne preklapaju. Lokacije koje ne pripadaju niti jednoj zoni označene su znakom. Potrebno je implementirati sljedeće funkcije: (a) (4 boda) int moze(char sklad[8][12] int pi int pj int h int w) koja provjerava može li se u skladište dodati nova zona čiji donji lijevi kut stoji u sklad[pi][pj] a ima visinu h i širinu w gdje je h w > 0. Zona se može dodati ukoliko je u potpunosti unutar skladišta te ukoliko se ne preklapa s drugim zonama. (b) (8 bodova) void najveca(char sklad[8][12] int pi int pj int *h int *w) koja preko varijabilnih parametara vraća dimenzije zone najveće površine koja se može zauzeti tako da joj je donji lijevi kut u sklad[pi][pj]. Ukoliko je dana lokacija već zauzeta u h i w sprema 1. (c) (8 bodova) void zauzmi(char sklad[8][12] char znak) koja u skladištu pronalazi pravokutni prostor najveće površine na kojem nema drugih zona te na njega dodaje novu zonu označenu znakom znak. Na primjer prva slika prikazuje skladište s tri zone. Poziv funkcije moze(sklad 3 1 2 3) bi vratio 1 dok bi poziv moze(sklad 3 1 3 3) vratio 0 zbog preklapanja. Poziv funkcije najveca(sklad 3 0 &k &l) bi u k spremio 4 a u l bi spremio 3. Konačno poziv zauzmi(sklad 1 ) bi rezultirao drugom slikom. $$$$ $$$$11111 $$$$ $$$$11111 %% %%11111 %% %%11111 ****** ******11111 ****** ******11111 ****** ******11111 11111

3 Zadatak 3. (20 bodova) Napišite funkciju void sort(double ***niznizova int m int n) koja prima niz od m dvodimenzionalnih nizova realnih brojeva (svaki od nizova je veličine n n) i sortira taj niz nizova uzlazno po umnošku svih elemenata dvodimenzionalnog niza. Primjerice jedan takav niz nizova gdje je m = 4 i n = 2 [ ] [ ] [ ] [ ] 10 0 1 2 1 1 1 1 0 0 1 1 1.5 1 1 1 potrebno je sortirati ovako: [ 1 1 1 1 ] [ 10 0 0 0 ] [ 1 1 1.5 1 ] [ 1 2 1 1 Napomena: Sve dodatne nizove koje koristite dinamički alocirajte pomoću funkcije malloc (ne trebate provjeravati uspješnost alokacije) i na kraju ih eksplicitno dealocirajte! ].

4 Zadatak 4. (15 bodova) Napišite funkciju ogradi koja prima string opis u kojem je zapisana riječ. Funkcija treba provjeriti da li se u svakom početnom komadu te riječi znak e pojavljuje više ili jednako puta nego znak f pri čemu u cijeloj riječi treba biti jednak broj znakova e i f. Ako to vrijedi funkcija treba u stringu zamijeniti svaki znak e znakom [ te svaki znak f znakom ]. U protivnom funkcija ne mijenja string. Kao vrijednost funkcija treba vratiti broj promijenjenih znakova te kroz varijabilni argument pokazivač na promijenjeni znak najvećeg indeksa ako takav postoji inače NULL. Ako je string duljine 0 funkcija treba vratiti 0 kao vrijednost te NULL kroz varijabilni argument. Napišite primjer poziva funkcije. Primjer: String "-efe-eff" zadovoljava traženi uvjet a string "-efe-ffe" ne zadovoljava.

1 Rezultati i uvidi u kolokvije: Rezultati u petak 3.5. navečer na webu a uvidi u ponedjeljak 6.5. u 16 sati. Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje te službeni podsjetnik. Kalkulatori razne neslužbene tablice papiri i sl. nisu dozvoljeni! Mobitele isključite i spremite! Sva rješenja napišite isključivo na papire sa zadacima jer jedino njih predajete. Obavezno predajte sve papire sa zadacima čak i ako neke zadatke niste rješavali. Ne zaboravite se potpisati na svim papirima! Skice smijete raditi i na drugim papirima koje će vam dati dežurni asistent. U svim zadacima zabranjeno je korištenje dodatnih nizova i standardne matematičke biblioteke (zaglavlje math.h) osim ako je u zadatku drugačije navedeno. Dozvoljeno je pisanje pomoćnih funkcija. Zadatak 1. (20 bodova) Radnici ukrcavaju teret u dva kamiona. Svaka kutija s teretom je numerirana brojem od 1 do n n 20. Radnici znaju da kamioni imaju nosivost k 1 i k 2 kilograma a i-ta kutija ima masu m i kilograma. Međutim drugom kamionu je probušena guma tako da u njega možemo utovariti samo kutije mase m i k 2 /4 kilograma. Napišite rekurzivnu funkciju koja će ispisati sve moguće načine za utovarivanje kutija u ta dva kamiona s time da sve kutije moraju biti utovarene. Dozvoljeno je da jedan od kamiona bude prazan. Bitno je samo koja kutija ide u koji kamion a poredak utovara u pojedini kamion nije bitan. Svaki način utovara treba ispisati u svom redu kao uređeni par od dva niza. Prvi niz su indeksi kutija koje idu u prvi kamion i analogno za drugi niz. Ako je neki niz prazan ne treba ispisati ništa na tom mjestu. Ako nema načina za utovar ne treba ispisati ništa. Primjer: Za nosivosti k 1 = 4000 k 2 = 5000 i 4 kutije s masama m 1 = 500 m 2 = 1000 m 3 = 1500 m 4 = 2000 svi mogući načini utovara su: (1 3 4 2) (3 4 1 2). Napomene: Smijete koristiti jedno polje realnih brojeva koje sadrži mase kutija i jedno polje cijelih brojeva za spremanje informacija o kutijama kod utovara. Ne smijete koristiti globalne varijable. Smijete koristiti pomoćne funkcije.

2 Zadatak 2. (20 bodova) Plan nekog grada reprezentiran je matricom znakova char plan[10][13]. Plan grada prikazuje zgrade kao pravokutna polja. Svaka zgrada označena je nekim svojim znakom različitim od - i od znaka za ostale zgrade. Zgrade se nikad ne preklapaju. Lokacije na planu koje ne pripadaju niti jednoj zgradi označene su znakom -. Potrebno je implementirati sljedeće funkcije: (a) (4 boda) int probaj(char plan[10][13] int pi int pj int h int w) koja provjerava može li se u plan dodati nova zgrada čiji gornji desni kut stoji u plan[pi][pj] a na planu ima visinu h i širinu w gdje je h w > 0. Zgrada se može dodati ukoliko je u potpunosti unutar plana te ukoliko se ne preklapa s drugim zgradama. (b) (8 bodova) void velicina(char plan[10][13] int pi int pj int *h int *w) koja preko varijabilnih parametara vraća dimenzije zgrade najveće površine na planu koja se može zauzeti tako da joj je gornji desni kut u plan[pi][pj]. Ukoliko je dana lokacija već zauzeta u h i w sprema 1. (c) (8 bodova) void sagradi(char plan[10][13] char znak) koja u planu pronalazi pravokutni prostor najveće površine na kojem nema drugih zgrada te na njega dodaje novu zgradu označenu znakom znak. Na primjer prva slika prikazuje plan s tri zgrade. Poziv funkcije probaj(plan 3 3 2 4) bi vratio 1 dok bi poziv probaj(plan 3 3 3 4) vratio 0 zbog preklapanja. Poziv funkcije velicina(plan 3 1 &k &l) bi u k spremio 7 a u l bi spremio 2. Konačno poziv sagradi(plan 1 ) bi rezultirao drugom slikom. ------------- ----111111111 $$$$--------- $$$$111111111 $$$$--------- $$$$111111111 ------------- ----111111111 ------------- ----111111111 ---%%--****** ---%%--****** ---%%--****** ---%%--****** ---%%--****** ---%%--****** ---%%-------- ---%%-------- ------------- -------------

3 Zadatak 3. (20 bodova) Napišite funkciju void sort(double ***niznizova int m int n) koja prima niz od m dvodimenzionalnih nizova realnih brojeva (svaki od nizova je veličine n n) i sortira taj niz nizova silazno po umnošku svih elemenata dvodimenzionalnog niza. Primjerice jedan takav niz nizova gdje je m = 4 i n = 2 [ ] [ ] [ ] [ ] 10 0 1 2 1 1 1 1 0 0 1 1 1.5 1 1 1 potrebno je sortirati ovako: [ 1 2 1 1 ] [ 1 1 1.5 1 ] [ 10 0 0 0 ] [ 1 1 1 1 Napomena: Sve dodatne nizove koje koristite dinamički alocirajte pomoću funkcije malloc (ne trebate provjeravati uspješnost alokacije) i na kraju ih eksplicitno dealocirajte! ].

4 Zadatak 4. (15 bodova) Napišite funkciju izgradi koja prima string ispis u kojem je zapisana riječ. Funkcija treba provjeriti da li se u svakom zadnjem komadu te riječi znak g pojavljuje manje ili jednako puta nego znak h pri čemu u cijeloj riječi treba biti jednak broj znakova g i h. Ako to vrijedi funkcija treba u stringu zamijeniti svaki znak g znakom < te svaki znak h znakom >. U protivnom funkcija ne mijenja string. Kao vrijednost funkcija treba vratiti broj promijenjenih znakova te kroz varijabilni argument pokazivač na promijenjeni znak najmanjeg indeksa ako takav postoji inače NULL. Ako je string duljine 0 funkcija treba vratiti 0 kao vrijednost te NULL kroz varijabilni argument. Napišite primjer poziva funkcije. Primjer: String "ghg-ghh-" zadovoljava traženi uvjet a string "hgg-ghh-" ne zadovoljava.