Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić:...

53
Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija neobaveznih zadataka za ponavljanje prethodnog i utvrđivanje novog gradiva Akademska godina 2014/15 1 Zadaci za samostalno vježbanje 2. Svi zadaci dati ovdje su takvi da se mogu uraditi korištenjem isključivo gradiva prva dva predavanja i ranije stečenog predznanja na predmetu “Osnove računarstva”. Zvjezdicom (*) su označeni zadaci koji su se pojavljivali na dosadašnjim ispitima (eventualno uz minorne modifikacije, koje suštinski ništa ne mijenjaju). Tarabom (#) su označeni zadaci koji su u prethodnim generacijama bili zadaci za zadaću. Savjetuju se studenti da koriste razne C++11 novine (poput rangovskih for-petlji pri radu sa nizovima i vektorima) koje su rađene na predavanjima gdje god bi im one mogle biti od koristi, ali da također i razmisle kako bi se isti problem mogao riješiti na “stariji” način (tj. bez dodataka uvedenih u C++11). Napomena: Među zadacima ima dosta sličnih zadataka, tako da je često moguće minornom prepravkom rješenje jednog zadatka prepraviti u rješenje njemu sličnog zadatka. 1. Napišite program koji za prirodan broj n unesen sa tastature ispisuje na ekran formatiranu tablicu množenja za sve brojeve od 1 do n uključivo. Na primjer, ukoliko se unese n = 5, ispis na ekran bi trebao izgledati poput sljedećeg: +-----+-----+-----+-----+-----+ | 1 | 2 | 3 | 4 | 5 | +-----+-----+-----+-----+-----+ | 2 | 4 | 6 | 8 | 10 | +-----+-----+-----+-----+-----+ | 3 | 6 | 9 | 12 | 15 | +-----+-----+-----+-----+-----+ | 4 | 8 | 12 | 16 | 20 | +-----+-----+-----+-----+-----+ | 5 | 10 | 15 | 20 | 25 | +-----+-----+-----+-----+-----+ Pretpostavite da je n takav da će čitava tablica stati na ekran i da niti jedan produkt neće imati više od 3 cifre. Za ispis koristite objekat izlaznog toka cout”, a za prilagođavanje širine ispisa manipulator setw”. 2. Napišite funkciju UnesiBroj” bez parametara, koja od korisnika očekuje da unese neki realni broj. Ukoliko je zaista unesen realan broj, funkcija treba da ga vrati kao rezultat iz funkcije. Ukoliko nije unesen broj, funkcija treba ispisati “Neispravan unos. Molimo, pokušajte ponovo.” i ponovo tražiti broj, sve dok se zaista ne unese ispravan broj (prema tome, funkcija ne završava dok se ne unese ispravan broj). Napisanu funkciju iskoristite u programu koji traži da se unesu koeficijenti a, b i c linearne jednačine a x + b = c, a koji zatim nalazi i ispisuje njeno rješenje, pod uvjetom da ono postoji, ili odgovarajuću poruku u suprotnom. 3. Napišite funkciju koja ima jedan cjelobrojni parametar. Funkcija treba da vrati kao rezultat logičku vrijednost “true” ukoliko je broj simetričan, odnosno ukoliko se isto čita sa obje strane (na primjer, broj 13431 je simetričan). U suprotnom, funkcija vraća kao rezultat logičku vrijednost “false”. Napisanu funkciju trebate demonstrirati u kratkom testnom programu na brojevima koji se unose sa tastature. Program za svaki uneseni broj treba da ispise da li je simetričan ili nije. Program treba da završi rad kada se kao broj unese 0. 4 * . Napišite funkciju koja kao parametar prima neki prirodan broj i koja vraća logičku vrijednost “tačno” ili “netačno” u ovisnosti da li u broju koji je proslijeđen kao parametar ima jednakih cifara ili ne. Napišite i kratki testni program u kojem ćete demonstrirati kako se poziva napisana funkcija i kako se može iskoristiti njen rezultat. 5 * . Napišite funkciju koja kao parametar prima neki prirodan broj i koja vraća logičku vrijednost “tačno” ili “netačno” u ovisnosti da li su u broju koji je proslijeđen kao parametar sve cifre različite ili ne. Napišite i kratki testni program u kojem ćete demonstrirati kako se poziva napisana funkcija i kako se može iskoristiti njen rezultat. 6. Napišite funkciju “IzbaciNule” koja ima kao parametar neki prirodan broj, a koja daje kao rezultat isti taj broj, samo iz kojeg su izbačene sve cifre koje su nule. Na primjer, ukoliko se kao parametar funkciji proslijedi broj 35020040, rezultat funkcije treba da bude 3524. Ukoliko broj ne sadrži niti jednu nulu kao svoju cifru, onda je on sam ujedno i rezultat funkcije. Napisanu funkciju trebate demonstrirati u kratkom testnom programu na brojevima koji se unose sa tastature. Program treba da završi rad kada se kao broj unese 0.

Transcript of Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić:...

Page 1: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2

Kolekcija neobaveznih zadataka za ponavljanje prethodnog i utvrđivanje novog gradiva Akademska godina 2014/15

1

Zadaci za samostalno vježbanje 2. Svi zadaci dati ovdje su takvi da se mogu uraditi korištenjem isključivo gradiva prva dva predavanja i ranije stečenog predznanja na predmetu “Osnove računarstva”. Zvjezdicom (*) su označeni zadaci koji su se pojavljivali na dosadašnjim ispitima (eventualno uz minorne modifikacije, koje suštinski ništa ne mijenjaju). Tarabom (#) su označeni zadaci koji su u prethodnim generacijama bili zadaci za zadaću. Savjetuju se studenti da koriste razne C++11 novine (poput rangovskih for-petlji pri radu sa nizovima i vektorima) koje su rađene na predavanjima gdje god bi im one mogle biti od koristi, ali da također i razmisle kako bi se isti problem mogao riješiti na “stariji” način (tj. bez dodataka uvedenih u C++11).

Napomena: Među zadacima ima dosta sličnih zadataka, tako da je često moguće minornom prepravkom rješenje jednog zadatka prepraviti u rješenje njemu sličnog zadatka.

1. Napišite program koji za prirodan broj n unesen sa tastature ispisuje na ekran formatiranu tablicu množenja za sve brojeve od 1 do n uključivo. Na primjer, ukoliko se unese n = 5, ispis na ekran bi trebao izgledati poput sljedećeg:

+-----+-----+-----+-----+-----+

| 1 | 2 | 3 | 4 | 5 |

+-----+-----+-----+-----+-----+

| 2 | 4 | 6 | 8 | 10 |

+-----+-----+-----+-----+-----+

| 3 | 6 | 9 | 12 | 15 |

+-----+-----+-----+-----+-----+

| 4 | 8 | 12 | 16 | 20 |

+-----+-----+-----+-----+-----+

| 5 | 10 | 15 | 20 | 25 |

+-----+-----+-----+-----+-----+

Pretpostavite da je n takav da će čitava tablica stati na ekran i da niti jedan produkt neće imati više od 3

cifre. Za ispis koristite objekat izlaznog toka “cout”, a za prilagođavanje širine ispisa manipulator “setw”.

2. Napišite funkciju “UnesiBroj” bez parametara, koja od korisnika očekuje da unese neki realni broj. Ukoliko je zaista unesen realan broj, funkcija treba da ga vrati kao rezultat iz funkcije. Ukoliko nije unesen broj, funkcija treba ispisati “Neispravan unos. Molimo, pokušajte ponovo.” i ponovo tražiti broj, sve dok se zaista ne unese ispravan broj (prema tome, funkcija ne završava dok se ne unese ispravan broj). Napisanu funkciju iskoristite u programu koji traži da se unesu koeficijenti a, b i c linearne jednačine a x + b = c, a koji zatim nalazi i ispisuje njeno rješenje, pod uvjetom da ono postoji, ili odgovarajuću poruku u suprotnom.

3. Napišite funkciju koja ima jedan cjelobrojni parametar. Funkcija treba da vrati kao rezultat logičku vrijednost “true” ukoliko je broj simetričan, odnosno ukoliko se isto čita sa obje strane (na primjer, broj

13431 je simetričan). U suprotnom, funkcija vraća kao rezultat logičku vrijednost “false”. Napisanu funkciju trebate demonstrirati u kratkom testnom programu na brojevima koji se unose sa tastature. Program za svaki uneseni broj treba da ispise da li je simetričan ili nije. Program treba da završi rad kada se kao broj unese 0.

4*. Napišite funkciju koja kao parametar prima neki prirodan broj i koja vraća logičku vrijednost “tačno” ili

“netačno” u ovisnosti da li u broju koji je proslijeđen kao parametar ima jednakih cifara ili ne. Napišite i kratki testni program u kojem ćete demonstrirati kako se poziva napisana funkcija i kako se može iskoristiti njen rezultat.

5*. Napišite funkciju koja kao parametar prima neki prirodan broj i koja vraća logičku vrijednost “tačno” ili

“netačno” u ovisnosti da li su u broju koji je proslijeđen kao parametar sve cifre različite ili ne. Napišite i kratki testni program u kojem ćete demonstrirati kako se poziva napisana funkcija i kako se može iskoristiti njen rezultat.

6. Napišite funkciju “IzbaciNule” koja ima kao parametar neki prirodan broj, a koja daje kao rezultat isti taj broj, samo iz kojeg su izbačene sve cifre koje su nule. Na primjer, ukoliko se kao parametar funkciji proslijedi broj 35020040, rezultat funkcije treba da bude 3524. Ukoliko broj ne sadrži niti jednu nulu kao svoju cifru, onda je on sam ujedno i rezultat funkcije. Napisanu funkciju trebate demonstrirati u kratkom testnom programu na brojevima koji se unose sa tastature. Program treba da završi rad kada se kao broj unese 0.

Page 2: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2

Kolekcija neobaveznih zadataka za ponavljanje prethodnog i utvrđivanje novog gradiva Akademska godina 2014/15

2

7. Napišite funkciju “Podbroj” sa dva parametra “n” i “parnost”, od kojih je prvi cjelobrojnog a drugi logičkog tipa. Ukoliko parametar “parnost” ima vrijednost “true”, funkcija treba da kao rezultat vrati broj koji se sastoji samo od parnih cifara broja “n” (uzetih u istom poretku), a ukoliko parametar “parnost” ima vrijednost “false”, funkcija treba da kao rezultat vrati broj koji se sastoji samo od neparnih cifara broja “n”. Na primjer, nakon izvrsenja naredbi

std::cout << Podbroj(3427816, true) << std::endl; std::cout << Podbroj(3427816, false) << std::endl;

treba da se ispišu brojevi 4286 i 371. Napisanu funkciju trebate demonstrirati na kratkom testnom programu koji će za broj unesen sa tastature ispisati brojeve sastavljene od njegovih parnih odnosno neparnih cifara. Proces treba da se ponavlja sve dok korisnik ne unese nulu.

8. Neka je n prirodan broj, i neka je n1 proizvod cifara broja n, n2 proizvod cifara broja n1, n3 proizvod cifara broja n2 itd. Najmanji broj k za koji vrijedi da je nk jednocifren broj u teoriji brojeva se naziva multiplikativna otpornost broja n. Na primjer, multiplikativna otpornost broja 6788 iznosi 6, jer je:

n1 = 6 * 7 * 8 * 8 = 2688 n2 = 2 * 6 * 8 * 8 = 768 n3 = 7 * 6 * 8 = 336 n4 = 3 * 3 * 6 = 54 n5 = 5 * 4 = 20 n6 = 2 * 0 = 0

Napišite funkciju “MultOtpornost” koja kao parametar prima prirodan broj n a vraća kao rezultat njegovu multiplikativnu otpornost.

Napisanu funkciju trebate demonstrirati na kratkom testnom programu koji će ispisati sve brojeve u opsegu od a do b uključivo koji imaju zadanu multiplikativnu otpornost k pri cemu se vrijednosti a, b i k zadaju putem tastature. Na primjer, ukoliko se za a, b i k unesu vrijednosti 9985, 10002 i 3, treba da se ispišu brojevi 9987, 9988, 9989, 9992, 9993, 9994, 9995, 9998 i 9999, jer ti brojevi u zadanom intervalu imaju multiplikativnu otpornost 3.

Napomena: Za sve razumne vrijednosti n, multiplikativna otpornost ima uglavnom jednocifrenu vrijednost, pa o tome vodite računa kada budete testirali program. Brojevi koji imaju multiplikativnu otpornost veću od 9 izrazito su rijetki!

9. Napišite program koji traži da se sa tastature unese jedan kompleksan broj z i dva realna broja x i y, a

koji zatim računa i ispisuje vrijednost izraza

2

3

5

iyxz

ix

Na primjer, ukoliko se sa tastature unesu podaci z = (3, 7), x = 2 i y = 6, program treba da ispiše rezultat

(4.004757, –0.0173699) jer je

2

3 62)73(

52

ii

i= 4.004757 – 0.0173699

i

10. Poznata Moievrova teorema za kompleksne brojeve tvrdi da je za ma kakve realne brojeve x i n

(cos x + i sin x) n = cos n

x + i

sin n

x

Napišite program koji će za realne brojeve x i n unesene sa tastature izračunati lijevu i desnu stranu ovog izraza i ispisati ih na ekranu, koristeći kompleksni tip podataka. Na nekoliko primjera provjerite da li se zaista dobijaju jednake vrijednosti.

11. Prepravite program za rješavanje kvadratne jednačine rađen na Predavanju 2. koji koristi kompleksne promjenljive tako da dopusti da i koeficijenti kvadratne jednačine budu kompleksni brojevi. Pri tome, rješenja čiji je imaginarni dio jednak nuli treba ispisati tako da se ispisuju čisto kao realni brojevi, a ne

kao uređeni parovi realnih brojeva. Uputa: koristite funkciju “real”.

Page 3: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2

Kolekcija neobaveznih zadataka za ponavljanje prethodnog i utvrđivanje novog gradiva Akademska godina 2014/15

3

12. Napišite funkcije “SviElementiSuJednaki” i “SviElementiSuRazliciti”. I jedna i druga funkcija primaju kao parametar jedan vektor realnih brojeva, a vraćaju kao rezultat logičku vrijednost (tj. vrijednost tipa “bool”). Funkcija “SviElementiSuJednaki” vraća vrijednost “true” ako i samo ako su svi elementi vektora međusobno identični, a u suprotnom vraća “false”. Funkcija “SviElementiSuRazliciti” vraća vrijednost “true” ako i samo ako su svi elementi vektora međusobno različiti (tj. ukoliko nikoja dva elementa nisu međusobno jednaka), a u suprotnom vraća “false”. Napisane funkcije testirajte u

glavnom programu (“main” funkciji) u kojem se prvo sa tastature unosi prirodan broj n i n elemenata vektora, a nakon toga pozivaju napisane funkcije sa ciljem da se utvrdi da li su svi elementi vektora jednaki odnosno različiti (naravno, rezultate obavljene analize treba prikazati na ekranu u vidu odgovarajućih poruka).

13*. Napišite funkciju koja kao parametar prima vektor cijelih brojeva, a koja vraća logičku vrijednost

“tačno” ili “netačno”, u ovisnosti da li u vektoru ima parnih brojeva ili ne. Napisanu funkciju demonstrirajte u testnom programu u kojem se sa tastature unosi prirodan broj n a zatim n cijelih brojeva, koji se unose u vektor. Nakon unosa, program treba pozvati napisanu funkciju sa ciljem da utvrdi ima li među unesenim brojevima parnih brojeva ili ne i ispisati odgovarajuću poruku, ovisno od rezultata funkcije.

14*. Napišite funkciju koja kao parametar prima vektor cijelih brojeva, a koja vraća logičku vrijednost

“tačno” ili “netačno”, u ovisnosti da li u vektoru ima potpunih kvadrata (tj. brojeva koji se mogu napisati kao kvadrati nekog drugog prirodnog broja) ili ne. Napisanu funkciju demonstrirajte u testnom programu u kojem se sa tastature unosi prirodan broj n a zatim n cijelih brojeva, koji se unose u vektor. Nakon unosa, program treba pozvati napisanu funkciju sa ciljem da utvrdi ima li među unesenim brojevima potpunih kvadrata ili ne i ispisati odgovarajuću poruku, ovisno od rezultata funkcije.

15*. Napišite funkciju koja ima dva parametra, od kojih je prvi niz realnih brojeva, a drugi broj elemenata u

nizu. Funkcija treba da kreira vektor realnih brojeva koji sadrži isti broj elemenata kao i zadani niz, da prepiše sve elemente niza u kreirani vektor u obrnutom poretku (tj. prvi element niza treba da postane posljednji element vektora, drugi element niza treba da postane pretposljednji element vektora, itd.), i da vrati tako popunjeni vektor kao rezultat. Napisanu funkciju demonstrirajte u glavnom programu koji prvo sa tastature unosi elemente niza kapaciteta 10 elemenata. Nakon toga, program poziva napisanu funkciju sa ciljem generiranja vektora čiji su elementi u obrnutom poretku u odnosu na elemente unesenog niza. Na kraju, program ispisuje elemente generiranog vektora na ekran (međusobno razdvojene razmakom).

16*. Napišite funkciju koja kao parametar prima vektor cijelih brojeva, a koja vraća logičku vrijednost

“tačno” ili “netačno”, u ovisnosti da li u vektoru ima trocifrenih brojeva ili ne. Napisanu funkciju demonstrirajte u testnom programu u kojem se sa tastature unosi prirodan broj n a zatim n cijelih brojeva, koji se unose u vektor. Nakon unosa, program treba pozvati napisanu funkciju sa ciljem da utvrdi ima li među unesenim brojevima trocifrenih brojeva ili ne i ispisati odgovarajuću poruku, ovisno od rezultata funkcije.

17*. Napišite funkciju koja kao parametar prima vektor cijelih brojeva, a koja vraća logičku vrijednost “tačno”

ili “netačno”, u ovisnosti da li u vektoru ima brojeva koji su stepeni broja 2 ili ne (ukoliko želite, možete koristiti funkciju “log” iz biblioteke “cmath”, ali to nije neophodno). Napisanu funkciju demonstrirajte u testnom programu u kojem se sa tastature unosi prirodan broj n a zatim n cijelih brojeva, koji se unose u vektor. Nakon unosa, program treba pozvati napisanu funkciju sa ciljem da utvrdi ima li među unesenim brojevima stepena dvojke ili ne i ispisati odgovarajuću poruku, ovisno od rezultata funkcije.

18*. Napišite funkciju koja kao parametar prima jedan prirodan broj, a kao rezultat vraća vektor čiji su

elementi svi djelioci broja zadanog kao parametar. Napisanu funkciju demonstrirajte u glavnom programu u kojem se sa tastature unosi prirodan broj n i koji nakon toga poziva napisanu funkciju sa ciljem generiranja vektora čiji su elementi djelioci broja n, čije elemente na kraju treba ispisati na ekran (međusobno razdvojene razmakom).

19*. Napišite funkciju koja kao parametar prima jedan prirodan broj, a kao rezultat vraća vektor čiji su

elementi svi prirodni brojevi koji su potpuni kvadrati (tj. koji se mogu napisati kao kvadrat nekog drugog prirodnog broja), a koji su manji od broja zadanog kao parametar. Napisanu funkciju demonstrirajte u glavnom programu u kojem se sa tastature unosi prirodan broj n i koji nakon toga poziva napisanu funkciju sa ciljem generiranja vektora čiji su elementi svi potpuni kvadrati manji od n, čije elemente na kraju treba ispisati na ekran (međusobno razdvojene razmakom).

Page 4: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2

Kolekcija neobaveznih zadataka za ponavljanje prethodnog i utvrđivanje novog gradiva Akademska godina 2014/15

4

20*. Napišite funkciju koja kao parametar prima jedan prirodan broj, a kao rezultat vraća vektor čiji su

elementi svi stepeni broja 2, a koji su manji od broja zadanog kao parametar. Napisanu funkciju demonstrirajte u glavnom programu u kojem se sa tastature unosi prirodan broj n i koji nakon toga poziva napisanu funkciju sa ciljem generiranja vektora čiji su elementi svi stepeni dvojke manji od n, čije elemente na kraju treba ispisati na ekran (međusobno razdvojene razmakom).

21*. Napišite funkciju koja kao parametar prima jedan prirodan broj, a kao rezultat vraća vektor čiji su

elementi svi trocifreni brojevi koji su djeljivi sa brojem koji je zadan kao parametar. Napisanu funkciju demonstrirajte u glavnom programu u kojem se sa tastature unosi prirodan broj n i koji nakon toga poziva napisanu funkciju sa ciljem generiranja vektora čiji su elementi svi trocifreni brojevi djeljivi sa n, čije elemente na kraju treba ispisati na ekran (međusobno razdvojene razmakom).

22*. Napišite funkciju koja ima dva parametra, od kojih je prvi niz cijelih brojeva, a drugi broj elemenata u

nizu. Funkcija treba da kreira vektor cijelih brojeva koji sadrži iste elemente kao i zadani niz, ali tako da prvo idu parni, a zatim neparni brojevi (međusobni poredak parnih odnosno neparnih brojeva treba da bude isti kao i u izvornom nizu), i da vrati tako popunjeni vektor kao rezultat. Na primjer, ukoliko je niz sadržavao redom elemente 3, 5, 2, 7, 6, 4, 1, 8, 5, 9, 4, 3 i 4, vraćeni vektor treba da sadrži redom elemente 2, 6, 4, 8, 4, 4, 3, 5, 7, 1, 5, 9 i 3. Napisanu funkciju demonstrirajte u glavnom programu koji prvo sa tastature unosi elemente niza kapaciteta 10 elemenata. Nakon toga, program poziva napisanu funkciju sa ciljem generiranja vektora čiji su elementi u poretku kako je gore opisano u odnosu na elemente unesenog niza. Na kraju, program ispisuje elemente generiranog vektora na ekran (međusobno razdvojene razmakom).

23*. Napišite funkciju koja kao parametar prima vektor cijelih brojeva, a koja kao rezultat vraća novi vektor

čiji su elementi broj cifara odgovarajućih elemenata vektora koji je zadan kao parametar. Na primjer, ukoliko se funkciji proslijedi vektor čiji su elementi 32, 459, 72, 8, 24, 771 i 13, funkcija treba da kao rezultat vrati vektor čiji su elementi 2, 3, 2, 1, 2, 3 i 2. Napisanu funkciju demonstrirajte u kratkom testnom programu u kojem se sa tastature prvo unosi prirodan broj n, a zatim n elemenata vektora. Program tada poziva napisanu funkciju sa ciljem da kreira novi vektor koji sadrži brojeve cifara unesenih elemenata i ispisuje elemente novokreiranog vektora na ekran (međusobno razdvojene razmakom).

24*. Napišite funkciju koja ima jedan cjelobrojni parametar (nazovimo ga n), koja kao rezulat vraća vektor

koji se sastoji od svih prostih faktora broja n, pri čemu se svaki faktor pojavljuje onoliko puta koliko se puta on pojavljuje u faktorizaciji broja na proste faktore. Napišite i mali testni program u kojem ćete demonstrirati kako se napisana funkcija može iskoristiti za ispis prostih faktora broja koji se unosi sa tastature.

25*. Napišite funkciju koja kao parametar prima vektor cijelih brojeva, a koja kao rezultat vraća novi vektor

čiji su elementi sume cifara odgovarajućih elemenata vektora koji je zadan kao parametar. Na primjer, ukoliko se funkciji proslijedi vektor čiji su elementi 32, 459, 72, 8, 24, 771 i 13, funkcija treba da kao rezultat vrati vektor čiji su elementi 5, 18, 9, 8, 6, 15 i 4. Napisanu funkciju demonstrirajte u kratkom testnom programu u kojem se sa tastature prvo unosi prirodan broj n, a zatim n elemenata vektora. Program tada poziva napisanu funkciju sa ciljem da kreira novi vektor koji sadrži sume cifara unesenih elemenata i ispisuje elemente novokreiranog vektora na ekran (međusobno razdvojene razmakom).

26*. Napišite funkciju koja kao parametar prima vektor cijelih brojeva, a koja kao rezultat vraća novi vektor

čiji su elementi najmanje cifre odgovarajućih elemenata vektora koji je zadan kao parametar. Na primjer, ukoliko se funkciji proslijedi vektor čiji su elementi 32, 459, 72, 8, 24, 771 i 13, funkcija treba da kao rezultat vrati vektor čiji su elementi 2, 4, 2, 8, 2, 1 i 1. Napisanu funkciju demonstrirajte u kratkom testnom programu u kojem se sa tastature prvo unosi prirodan broj n, a zatim n elemenata vektora. Program tada poziva napisanu funkciju sa ciljem da kreira novi vektor koji sadrži najmanje cifre unesenih elemenata i ispisuje elemente novokreiranog vektora na ekran (međusobno razdvojene razmakom).

27*. Napišite funkciju koja kao parametar prima vektor cijelih brojeva, a koja kao rezultat vraća novi vektor u

koji su prepisani samo oni elementi primljenog vektora koji su složeni brojevi (tj. koji nisu prosti). Na primjer, ukoliko se funkciji proslijedi vektor čiji su elementi 7, 9, 2, 13, 23, 25, 17 i 91 funkcija treba da vrati kao rezultat vektor čiji su elementi 9, 25 i 91. Napisanu funkciju demonstrirajte u kratkom testnom programu u kojem se sa tastature prvo unosi prirodan broj n, a zatim n elemenata vektora. Program tada poziva napisanu funkciju sa ciljem da kreira novi vektor koji sadrži one elemente unesenog vektora koji su složeni brojevi i ispisuje elemente novokreiranog vektora na ekran (međusobno razdvojene razmakom).

Page 5: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2

Kolekcija neobaveznih zadataka za ponavljanje prethodnog i utvrđivanje novog gradiva Akademska godina 2014/15

5

28*. Napišite funkciju sa dva parametra, pri čemu je prvi parametar neki vektor cijelih brojeva, a drugi

parametar cijeli broj. Funkcija treba da vrati kao rezultat novi vektor čiji su elementi oni elementi vektora zadanog kao prvi parametar čija je suma cifara veća od broja zadanog drugim parametrom. Napišite i mali testni program u kojem ćete demonstrirati kako se upotrebljava napisana funkcija.

29*. Za neki element ai nekog slijeda brojeva kažemo da je lokalni maksimum ukoliko je manji od svojih

susjeda, tj. ukoliko vrijedi ai >

ai–1 i ai

>

ai+1. Napišite funkciju koja kao parametar prima vektor realnih

brojeva, a kao rezultat vraća novi vektor u kojem se nalaze svi lokalni maksimumi vektora koji je proslijeđen kao parametar (odnosno prazan vektor ako lokalnih maksimuma nema). Napišite i kratki testni program u kojem ćete demonstrirati kako se poziva napisana funkcija i kako se može iskoristiti njen rezultat.

30*. Za neki slijed brojeva kažemo da je oscilatoran ukoliko mu elementi naizmjenično rastu i opadaju ili

obrnuto. Na primjer, slijed brojeva 3, 7, 4, 6, 1, 5, 2, 3 je oscilatoran, kao i slijed 3, 1, 5, 4, 7, 2, 3, 2. Napišite funkciju koja prima kao parametar vektor realnih brojeva a koja vraća kao rezultat logičku vrijednost “tačno” ili “netačno” u ovisnosti da li je slijed brojeva pohranjen u vektoru oscilatoran ili ne. Napišite i kratki testni program u kojem ćete demonstrirati kako se poziva napisana funkcija i kako se može iskoristiti njen rezultat.

31#. Napišite funkciju “OdstraniDuplikate” i “BrojDuplikata” koja kao parametar primaju vektor cijelih

brojeva “v”. Funkcija “OdstraniDuplikate” treba da kao rezultat vrati novi vektor u koji će biti

prepisani svi elementi vektora “v” izostavljajući duplikate (tj. brojeve koji se ponavljaju). Funkcija “BrojDuplikata” treba da vrati kao rezultat broj brojeva koji se ponavljaju. Na primjer, ukoliko vektor “v” ima elemente 7, 10, 4, 2, 4, 4, 5, 6, 7, 3, 9, 1, 8, 6 i 7, funkcija “OdstraniDuplikate” treba da vrati vektor sa elementima 7, 10, 4, 2, 5, 6, 3, 9, 1 i 8, dok funkcija “BrojDuplikata” treba da vrati broj 3, jer se 3 broja ponavljaju (to su brojevi 7, 4 i 6). Napisane funkcije testirajte u programu koji traži da se prvo unese prirodan broj n, a nakon toga elementi nekog vektora koji ima n cjelobrojnih elemenata. Potom program treba da ispiše elemente vektora iz kojeg su odstranjeni brojevi koji se ponavljaju, kao i broj elemenata koji se ponavljaju.

32#. Napišite funkcije “ProstiBrojevi”, “ProstiBrojeviBlizanci”, “ProstiFaktori” i “Djelioci”.

Sve četiri funkcije imaju jedan cjelobrojni parametar (nazovimo ga n). Funkcija “ProstiBrojevi” treba da kreira i kao rezultat vrati vektor koji se sastoji od prvih n prostih brojeva. Funkcija “ProstiBrojeviBlizanci” treba da vrati vektor koji ima 2n elemenata, a koji se sastoji od prvih n parova tzv. prostih brojeva blizanaca, koji predstavljaju proste brojeve koji se međusobno razlikuju za 2 (npr. 3 i 5, 11 i 13, 29 i 31, itd.). Funkcija “ProstiFaktori” treba da kao rezultat vrati vektor koji se sastoji od svih prostih faktora broja n, pri čemu se svaki faktor pojavljuje onoliko puta koliko se puta on

pojavljuje u faktorizaciji broja na proste faktore. Funkcija “Djelioci” treba da kao rezultat vrati vektor koji se sastoji od svih djelilaca broja n. Napisane funkcije testirajte u malom testnom programu u kojem se sa tastature unosi prirodan broj n, a zatim pozivaju napisane funkcije sa ciljem generiranja odgovarajućih vektora koji se na kraju ispisuju na ekran (uz odgovarajuće poruke koje opisuju šta ti vektori predstavljaju).

Page 6: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

1

#Zadatak 1.

#include <iostream> #include <iomanip> int main() { int n; std::cout << "Unesi n: "; while(!(std::cin >> n), (n<=0 || n>=10)){ std::cout << "Unesi n: "; std::cin.clear(); std::cin.ignore(10000, '\n'); } int a(0); for(int i=1;i<=(n*2+1);i++){ if(i%2==0) a++; (i%2!=0)? std::cout << "+" : std::cout << "|"; for(int j=1;j<=n;j++) (i%2!=0)? std::cout << std::setfill('-') << std::setw(6) << "+" : std::cout << std::setfill(' ') << std::setw(4) << a*j << " |" ; std::cout << std::endl; } return 0; }

#Zadatak 2.

#include <iostream> double UnesiBroj(){ double broj; std::cout << "Unesite realan broj: "; while(!(std::cin >> broj)){ std::cout << "Neispravan unos. Molimo, pokusajte ponovo.\nUnesite realan broj: "; std::cin.clear(); std::cin.ignore(10000, '\n'); } return broj; } int main() { double a = UnesiBroj(); double b = UnesiBroj(); double c = UnesiBroj(); (a!=0)? std::cout << "x = " << ((c-b)/a) : std::cout << "Rjesenje jednacine ne postoji!"; return 0; }

Page 7: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

2

#Zadatak 3. ver. 1 #include <iostream> #include <vector> using namespace std; bool Simetrican(int n) { vector<int> v; bool sim(false); while(n != 0) { int cifra = n%10; v.push_back(cifra); n /= 10; } for(int i = 0, j = v.size()-1; i <= (v.size())/2, j > (v.size())/2; i++, j--) { if(v[j] == v[i]) sim = true; } return sim; } int main() { int n; cin >> n; bool k = Simetrican(n); if(k) cout << "Broj je simetrican."; else cout << "Broj nije simetrican."; return 0; }

Page 8: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

3

#Zadatak 3. ver. 2 #include <iostream> bool provjeri(int n){ int t(0), a=n; while(a!=0){ t*=10; t+=a%10; a/=10; } if (t==n) return true; return false; } int main() { int n; do{ std::cout << "Unesi n: "; std::cin >> n; if(n!=0) std::cout << provjeri(n) << std::endl; }while(n!=0); return 0; }

Page 9: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

4

#Zadatak 4.

#include <iostream> bool funkcija(int n){ int a=n, cifra_1, cifra_2; cifra_1=a%10; a/=10; while(a>0){ cifra_2=a%10; if(cifra_1==cifra_2) return true; else cifra_1=cifra_2; a/=10; } return false; } int main() { int n; std::cout << "Unesi prirodan broj: "; while(!(std::cin >> n), (n<=0)){ std::cout << "Unesi prirodan broj: "; std::cin.clear(); std::cin.ignore(10000, '\n'); } (funkcija(n)==1)? std::cout << "U unesenom broju postoje cifre koje se ponavljaju!" : std::cout << "U unesenom broju ne postoje cifre koje se ponavljaju."; return 0; }

Page 10: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

5

#Zadatak 5.

#include <iostream> bool funkcija(int n){ int cifra_1, cifra_2; cifra_1 = n%10; n/=10; while(n>0){ cifra_2 = n%10; if(cifra_1==cifra_2) return false; else cifra_1=cifra_2; n/=10; } return true; } int main() { int n; std::cout << "Unesite prirodan broj: "; while(!(std::cin >> n), (n<=0)){ std::cout << "Unesite prirodan broj: "; std::cin.clear(); std::cin.ignore(10000, '\n'); } (funkcija(n)==1)? std::cout << "Sve su cifre razlicite!" : std::cout << "Nisu sve cifre razlicite!"; return 0; }

Page 11: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

6

#Zadatak 6. ver. 1.

#include <iostream> using namespace std; int IzbaciNule(int n) { int obrnut_broj, cifra; while(n != 0) { cifra = n%10; if(cifra == 0) n /= 10; else { obrnut_broj = obrnut_broj*10 + cifra; n /= 10; } } int broj; while(obrnut_broj != 0) { cifra = obrnut_broj%10; broj = broj*10 + cifra; obrnut_broj /= 10; } return broj; } int main() { int n; do { cin >> n; int b = IzbaciNule(n); cout << b << endl; } while(n != 0); return 0; }

Page 12: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

7

#Zadatak 6. ver. 2.

#include <iostream> int IzbaciNule(int n){ int cifra, bez_nula(0), novi_broj(0); while(n>0){ cifra=n%10; if(cifra!=0){ bez_nula*=10; bez_nula+=cifra; } n/=10; } // Obrtanje broja jer je nakon prethodne petlje naopak: while(bez_nula>0){ novi_broj*=10; novi_broj += bez_nula%10; bez_nula/=10; } return novi_broj; } int main() { int n; std::cout << "Unesite prirodan broj: "; while(!(std::cin >> n), (n<=0)){ std::cout << "Unesite prirodan broj: "; std::cin.clear(); std::cin.ignore(10000, '\n'); } std::cout << "Uneseni broj bez nula glasi: " << IzbaciNule(n) << std::endl; return 0; }

Page 13: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

8

#Zadatak 7. ver. 1.

#include <iostream> using namespace std; int Okreni_broj(int n) { int broj = 0, cifra; while(n != 0) { cifra = n%10; broj = broj*10 + cifra; n /= 10; } return broj; } int Podbroj(int n, bool parnost) { int paran = 0, neparan = 0, cifra; while(n != 0) { cifra = n%10; if(cifra % 2 != 0) { neparan = neparan*10 + cifra; n /= 10; } else if(cifra % 2 == 0) { paran = paran*10 + cifra; n /= 10; } } if(parnost) return Okreni_broj(paran); return Okreni_broj(neparan); } int main() { cout << Podbroj(65456106, true) << endl; cout << Podbroj(65456106, false) << endl; return 0; }

Page 14: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

9

#Zadatak 7. ver. 2.

#include <iostream> int Podbroj(int n, bool parnost){ int cifra, broj(0), konacan_broj(0); while(n>0){ cifra=n%10; if((parnost==1 && cifra%2==0) || (parnost==0 && cifra%2!=0)){ broj*=10; broj+= cifra; } n/=10; } //Obrtanje broja posto je nakon prethodne petlje naopak: while(broj>0){ konacan_broj*=10; konacan_broj+=broj%10; broj/=10; } return konacan_broj; } int main() { int n; do{ std::cout << "Unesite n: "; std::cin >> n; if(n!=0){ std::cout << "Broj sastavljen od parnih cifara glasi: " << Podbroj(n, true) << std::endl; std::cout << "Broj sastavljen od neparnih cifara glasi: " << Podbroj(n, false) << std::endl; } }while(n!=0); return 0; }

Page 15: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

10

#Zadatak 8.

#include <iostream> int MultOtpornost(int n, int br){ int a(1); while(n!=0){ a*=n%10; n/=10; } n=a; br++; if(n/10!=0) return MultOtpornost(a, br); return br; } int main() { int a,b,k; std::cout << "Unesi dva prirodna broja: "; while(!(std::cin >> a >> b), (a<=0 || b<=0)){ std::cout << "Unesi dva prirodna broja: "; std::cin.clear(); std::cin.ignore(10000, '\n'); } std::cout << "Unesite multiplikativnu otpornost: "; while(!(std::cin >> k), (k<=0)){ std::cout << "Unesite multiplikativnu otpornost: "; std::cin.clear(); std::cin.ignore(10000, '\n'); } for(int i=a; i<=b; i++) if(MultOtpornost(i, 0)==k) std::cout << i << " "; return 0; }

Page 16: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

11

#Zadatak 9.

#include <iostream> #include <complex> typedef std::complex<double> kompleksan; int main() { double x,y,re,im; std::cout << "Unesite realni i imaginarni dio kompleksnog broja (re im): "; std::cin >> re >> im; kompleksan z(re,im); std::cout << "Unesite dva realna broja: "; std::cin >> x >> y; kompleksan z_1(x, y); kompleksan z_2(0, 5); kompleksan I = std::real(z_1) + z_2/( std::pow(z,3) * std::sqrt(std::conj(z_1)) ) ; std::cout << I*I << std::endl; return 0; }

#Zadatak 10.

#include <iostream> #include <complex> int main() { double x,n; std::cout << "Unesite x i n (x n): "; std::cin >> x >> n; std::complex<double> z = std::polar(1. ,x); std::complex<double> z_2(std::cos(n*x), std::sin(n*x)); std::cout << std::pow(z,n) << " = " << z_2; return 0; }

Page 17: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

12

#Zadatak 11.

#include <iostream> #include <complex> typedef std::complex<double> kompleksan; std::complex<double> unos(){ double re,im; std::cout << "Unesi koeficijent, moze biti i kompleksan broj (re im): "; std::cin >> re >> im; return {re, im}; } int main() { kompleksan a(unos()); kompleksan b(unos()); kompleksan c(unos()); kompleksan d = b*b - 4.*a*c; kompleksan x1 = (-b - std::sqrt(d))/2.; kompleksan x2 = (-b + std::sqrt(d))/2.; if(std::imag(x1)==0) std::cout << "x1 = " << std::real(x1) << std::endl << "x2 = " << std::real(x2); else std::cout << "x1 = " << x1 << std::endl << "x2 = " << x2; return 0; }

Page 18: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

13

#Zadatak 12.

#include <iostream> #include <vector> bool SviElementiSuJednaki(std::vector<double> v){ int isti(0); double b = v.at(0); for(double x : v){ if(x != b) isti++; b = x; } if(isti==0) return true; } bool SviElementiSuRazliciti(std::vector<double> v){ int razliciti(0); double b; for(double x : v){ if(x == b) razliciti++; b=x; } if(razliciti==0) return true; } int main() { int n; std::cout << "Unesi n: "; std::cin >> n; std::vector<double> vekt; double unos; std::cout << "Unesi vektor od " << n << " elemenata: "; while(n-- > 0){ std::cin >> unos; vekt.push_back(unos); } if(SviElementiSuRazliciti(vekt)) std::cout << "Svi elementi unesenog vektora su razliciti."; else if(SviElementiSuJednaki(vekt)) std::cout << "Svi elementi unesenog vektora su jednaki."; else std::cout << "Niti su svi elementi jednaki, niti su svi razliciti."; return 0; }

Page 19: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

14

#Zadatak 13. ver. 1.

#include <iostream> #include <vector> using namespace std; bool Ima_parnih(int n) { bool ima(false); if(n%2 == 0) ima = true; return ima; } int main() { cout << "Unesite prirodan broj n: "; int n; cin >> n; vector<int> vektor; for(int i = 0; i < n; i++) { int broj; cin >> broj; vektor.push_back(broj); } bool ima(false); for(int i : vektor) { if(Ima_parnih(i)) ima = true; } if(ima) cout << "U vektoru ima parnih brojeva."; else cout << "U vektoru nema parnih brojeva."; return 0; }

Page 20: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

15

#Zadatak 13. ver. 2.

#include <iostream> #include <vector> bool funk(std::vector<int> v){ for(int x : v) if(x%2==0) return true; return false; } int main() { std::vector<int> vekt; double unos; std::cout << "Unesite elemente vektora (0 za kraj unosa): "; while(std::cin >> unos, unos!=0) vekt.push_back(unos); (funk(vekt))? std::cout << "U unesenom vektoru ima parnih brojeva." : std::cout << "U unesenom vektoru nema parnih brojeva."; return 0; }

Page 21: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

16

#Zadatak 14. var. 1.

#include <iostream> #include <vector> #include <math.h> using namespace std; bool Potpuni_kvadrati(vector<int> vektor) { bool jest(false); for(int i = 0; i < vektor.size(); i++) { int kvadrat = sqrt(vektor[i]); if(sqrt((double)vektor[i]) == kvadrat) jest = true; } return jest; } int main() { cout << "Unesite prirodan broj: "; int n; cin >> n; vector<int> vektor; for(int i = 0; i < n; i++) { int broj; cin >> broj; vektor.push_back(broj); } if(Potpuni_kvadrati(vektor)) cout << "U vektoru ima potpunih kvadrata."; else cout << "U vektoru nema potpunih kvadrata."; return 0; }

Page 22: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

17

#Zadatak 14. var. 2.

#include <iostream> #include <vector> #include <cmath> bool funk(std::vector<int> v){ for(double x : v) if(sqrt(x)==int(sqrt(x))) return true; return false; } int main() { int n; std::cout << "Unesi n: "; std::cin >> n; std::vector<int> vekt; std::cout << "Unesite elemente vektora: "; int unos; while(std::cin >> unos, n-->1) vekt.push_back(unos); funk(vekt)? std::cout << "U unesenom vektoru ima potpunih kvadrata." : std::cout << "U unesenom vektoru nema potpunih kvadrata."; return 0; }

Page 23: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

18

#Zadatak 15. var. 1.

#include <iostream> #include <vector> using namespace std; vector<double> obrnuti_poredak(vector<double> vektor, int duzina) { vector<double> obrnuti_vektor(duzina); for(int i = 0, j = duzina-1; i < duzina, j >= 0; i++, j--) { obrnuti_vektor[i] = vektor[j]; } return obrnuti_vektor; } int main() { vector<double> vektor; for(int i = 0; i < 10; i++) { double broj; cin >> broj; vektor.push_back(broj); } vector<double> obrnuti_vektor = obrnuti_poredak(vektor, vektor.size()); for(int i = 0; i < obrnuti_vektor.size(); i++) cout << obrnuti_vektor[i] << " "; return 0; }

Page 24: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

19

#Zadatak 15. var. 2.

#include <iostream> #include <vector> std::vector<double> funk(double *c, int n){ std::vector<double> v; while (n-->0) v.push_back(c[n]); return v; } int main() { int i(0), vel; double niz[9]; std::cout << "Unesite elemente niza: "; do{ std::cin >> niz[i]; }while(niz[i++]!=0 && i<10); vel= --i; std::vector<double> vekt = funk(niz, vel); for(int i=0; i<int(vekt.size()); i++) std::cout << vekt.at(i) << " "; return 0; }

Page 25: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

20

#Zadatak 16. var. 1.

#include <iostream> #include <vector> using namespace std; bool ima_li_trocifrenih(vector<int> vektor) { int ima(false); for(int i : vektor) { int brojac = 0; while(i != 0) { i /= 10; brojac++; } if(brojac == 3) ima = true; } return ima; } int main() { cout << "Unesite neki prirodan broj: "; int n; cin >> n; vector<int> vektor; for(int i = 0; i < n; i++) { int broj; cin >> broj; vektor.push_back(broj); } if(ima_li_trocifrenih(vektor)) cout << "U vektoru ima trocifrenih brojeva."; else cout << "U vektoru nema trocifrenih brojeva."; return 0; }

Page 26: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

21

#Zadatak 16. var. 2.

#include <iostream> #include <vector> bool trocifreni(std::vector<int> v){ int p(0); for(int x : v){ p=0; while(x>0){ p++; x/=10; } if(p==3) return true; } return false; } int main() { int n; std::cout << "Unesi n: "; std::cin >> n; std::vector<int> vekt; int unos; std::cout << "Unesi elemente vektora: "; while(std::cin >> unos, n-->0) vekt.push_back(unos); (trocifreni(vekt))? std::cout << "U unesenom vektoru ima trocifrenih brojeva." : std::cout << "U unesenom vektoru nema trocifrenih brojeva."; return 0; }

Page 27: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

22

#Zadatak 17. var. 1.

#include <iostream> #include <vector> #include <cmath> using namespace std; bool stepeni_broja_dva(vector<int> vektor) { bool stepen(false); for(int i = 0; i < vektor.size(); i++) { for(int j = 0; j < 15; j++) { if(j*log(2) == log(vektor[i])) stepen = true; } } return stepen; } int main() { cout << "Unesite prirodan broj: "; int n; cin >> n; vector<int> vektor; for(int i = 0; i < n; i++) { int broj; cin >> broj; vektor.push_back(broj); } if(stepeni_broja_dva(vektor)) cout << "U vektoru ima brojeva koji su stepen broja 2."; else cout << "U vektoru nema brojeva koji su stepen broja 2."; return 0; }

Page 28: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

23

#Zadatak 17. var. 2.

#include <iostream> #include <vector> bool fnk(std::vector<int> v){ for(int x : v) if(x%2==0){ while(x>2) x/=2; if(x%2==0) return true; } return false; } int main() { std::vector<int> v; int unos; std::cout << "Unesite elemente vektora (0 za kraj unosa): "; while(std::cin >> unos, unos!=0) v.push_back(unos); std::cout << "U unesenom vektoru " << ((fnk(v))? "ima" : "nema") << " brojeva koji su stepen broja 2."; return 0; }

Page 29: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

24

#Zadatak 18. var. 1.

#include <iostream> #include <vector> using namespace std; vector<int> djelioci_broja(int n) { vector<int> vektor; for(int i = 1; i < n; i++) { if(n % i == 0) vektor.push_back(i); } return vektor; } int main() { cout << "Unesite prirodan broj: "; int n; cin >> n; vector<int> vektor = djelioci_broja(n); for(int i : vektor) cout << i << " "; return 0; }

Page 30: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

25

#Zadatak 18. var. 2.

#include <iostream> #include <vector> typedef std::vector<int> vektor; vektor fnk(int n){ vektor v; for(int i=2; i<n; i++) if(n%i==0) v.push_back(i); return v; } int main() { int n; std::cout << "Unesite prirodan broj: "; while(!(std::cin >> n), n<=0){ std::cout << "Unesite prirodan broj: "; std::cin.clear(); std::cin.ignore(10000, '\n'); } vektor v(fnk(n)); std::cout << "Djelioci broja " << n << " su: "; for(int i=0; i<int(v.size()); i++) std::cout << v.at(i) << " "; return 0; }

Page 31: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

26

#Zadatak 19.

#include <iostream> #include <vector> #include <cmath> using namespace std; vector<int> vektor_potpunih_kvadrata(int n) { vector<int> vektor; for(int i = 1; i <= n; i++) { int kvadrat = sqrt(i); if(sqrt((double)i) == kvadrat) vektor.push_back(i); } return vektor; } int main() { cout << "Unesite prirodan broj: "; int n; cin >> n; auto vektor = vektor_potpunih_kvadrata(n); for(int i : vektor) cout << i << " "; return 0; }

Page 32: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

27

#Zadatak 20. var. 1.

#include <iostream> #include <vector> #include <cmath> using namespace std; vector<int> stepeni_broja_dva(int n) { vector<int> vektor; for(int i = 0; i < n; i++) { for(int j = 0; j < 15; j++) { if(j*log(2) == log(i)) vektor.push_back(i); } } return vektor; } int main() { cout << "Unesite prirodan broj: "; int n; cin >> n; auto vektor_brojeva_stepena_broja_dva = stepeni_broja_dva(n); for(int i : vektor_brojeva_stepena_broja_dva) cout << i << " "; return 0; }

Page 33: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

28

#Zadatak 20. var. 2.

#include <iostream> #include <vector> typedef std::vector<int> vektor; vektor fnk(int n){ int element; vektor v; for(int i=0; i<=n; i++){ if(i==0 || i==1) v.push_back(i); if(i%2==0 && i!=0){ element = i; while(element>2){ if(element%2==0) element/=2; else break; } if(element%2==0) v.push_back(i); } } return v; } int main() { int n; std::cout << "Unesi n: "; std::cin >> n; vektor v(fnk(n)); for(int i=0; i<int(v.size()); i++) std::cout << v.at(i) << " "; return 0; }

Page 34: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

29

#Zadatak 21. var. 1.

#include <iostream> #include <vector> using namespace std; vector<int> trocifreni(int n) { vector<int> vektor_trocifrenih; for(int i = 100; i <= 999; i++) { if(i % n == 0) vektor_trocifrenih.push_back(i); } return vektor_trocifrenih; } int main() { cout << "Unesite prirodan broj: "; int n; cin >> n; auto vektor_trocifrenih_brojeva = trocifreni(n); for(int i : vektor_trocifrenih_brojeva) cout << i << " "; return 0; }

#Zadatak 21. var. 2.

#include <iostream> #include <vector> typedef std::vector<int> vektor; vektor fnk(int n){ vektor v; for(int i=100; i<=999; i++) if(i%n==0) v.push_back(i); return v; } int main() { int n; std::cout << "Unesi n: "; std::cin >> n; vektor v(fnk(n)); for(int i=0; i<int(v.size()); i++) std::cout << v.at(i) << " "; return 0; }

Page 35: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

30

#Zadatak 22. var. 1.

#include <iostream> #include <vector> using namespace std; vector<int> vektor_parnih_i_neparnih(int niz[], int duzina) { vector<int> vektor; for(int i = 0; i < duzina; i++) { if(niz[i]%2 == 0) vektor.push_back(niz[i]); } for(int i = 0; i < duzina; i++) { if(niz[i]%2 != 0) vektor.push_back(niz[i]); } return vektor; } int main() { cout << "Unesite niz cijelih brojeva: "; int niz[10]; for(int i = 0; i < 10; i++) cin >> niz[i]; auto vektor = vektor_parnih_i_neparnih(niz, 10); for(int i : vektor) cout << i << " "; return 0; }

Page 36: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

31

#Zadatak 22. var. 2.

#include <iostream> #include <vector> typedef std::vector<int> vektor; vektor fnk(int *niz, int n){ vektor v; //Ubacivanje parnih brojeva u vektor for(int i=0; i<n; i++) if(niz[i]%2==0) v.push_back(niz[i]); //Ubacivanje neparnih brojeva u vektor for(int i=0; i<n; i++) if(niz[i]%2!=0) v.push_back(niz[i]); return v; } int main() { int niz[9], i(0); std::cout << "Unesite niz cijelih brojeva (0 za kraj unosa): "; do{ std::cin >> niz[i]; }while(niz[i++]!=0 && i<9); int vel(--i); // --i, jer ne racunamo nulu koja sluzi kao kraj unosa vektor v(fnk(niz, vel)); for(int i=0; i<int(v.size()); i++) std::cout << v.at(i) << " "; return 0; }

Page 37: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

32

#Zadatak 23. var. 1.

#include <iostream> #include <vector> using namespace std; vector<int> broj_cifara(vector<int> vektor) { vector<int> brojcifara; for(int i = 0; i < vektor.size(); i++) { int brojac = 0; while(vektor[i] != 0) { vektor[i] /= 10; brojac++; } brojcifara.push_back(brojac); } return brojcifara; } int main() { cout << "Unesite prirodan broj: "; int n; cin >> n; vector<int> vektor; for(int i = 0; i < n; i++) { int broj; cin >> broj; vektor.push_back(broj); } auto vektor_broja_cifara = broj_cifara(vektor); for(int i : vektor_broja_cifara) cout << i << " "; return 0; }

Page 38: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

33

#Zadatak 23. var. 2.

#include <iostream> #include <vector> typedef std::vector<int> vektor; vektor fnk(vektor v){ int brojac(1); vektor izlaz; for(int x : v){ brojac=0; while(x > 0){ brojac++; x/=10; } izlaz.push_back(brojac); } return izlaz; } int main() { int unos; vektor v; std::cout << "Unesite elemente vektora (0 za kraj unosa): "; while(std::cin >> unos, unos!=0) v.push_back(unos); vektor novi(fnk(v)); std::cout << "Vektor ciji su elementi brojevi cifara unesenog vektora glasi: \n"; for(int i=0; i<int(novi.size()); i++) std::cout << novi.at(i) << " "; return 0; }

Page 39: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

34

#Zadatak 24.

#include <iostream> #include <vector> typedef std::vector<int> vektor; vektor fnk(int n){ vektor v; for(int i=2; i<=n; i++) if(n%i==0){ n/=i; v.push_back(i--); } return v; } int main() { int n; std::cout << "Unesi n: "; std::cin >> n; std::cout << "Prosti faktori broja " << n << " su: "; vektor faktori(fnk(n)); for(int i=0; i<int(faktori.size()); i++) std::cout << faktori.at(i) << " "; return 0; }

Page 40: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

35

#Zadatak 25. var. 1.

#include <iostream> #include <vector> using namespace std; vector<int> suma_cifara(vector<int> vektor) { vector<int> suma; for(int i = 0; i < vektor.size(); i++) { int temp_suma = 0; while(vektor[i] != 0) { int cifra = vektor[i]%10; temp_suma += cifra; vektor[i] /= 10; } suma.push_back(temp_suma); } return suma; } int main() { cout << "Unesite prirodan broj: "; int n; cin >> n; vector<int> vektor; for(int i = 0; i < n; i++) { int broj; cin >> broj; vektor.push_back(broj); } auto vektor_suma_cifara = suma_cifara(vektor); for(int i : vektor_suma_cifara) cout << i << " "; return 0; }

Page 41: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

36

#Zadatak 26.

#include <iostream> #include <vector> using namespace std; vector<int> najmanja_cifra(vector<int> vektor) { vector<int> vektor_najmanjih_cifara; for(int i = 0; i < vektor.size(); i++) { int min = 9; while(vektor[i] != 0) { int cifra = vektor[i]%10; if(cifra < min) min = cifra; vektor[i] /= 10; } vektor_najmanjih_cifara.push_back(min); } return vektor_najmanjih_cifara; } int main() { cout << "Unesite prirodan broj: "; int n; cin >> n; vector<int> vektor; for(int i = 0; i < n; i++) { int broj; cin >> broj; vektor.push_back(broj); } auto vektor_najmanjih_cifara = najmanja_cifra(vektor); for(int i : vektor_najmanjih_cifara) cout << i << " "; return 0; }

Page 42: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

37

#Zadatak 27. var. 1.

#include <iostream> #include <vector> using namespace std; bool DaLiJeProst(int n) { bool prost(true); int brojac = 1; for(int i = 2; i <= n; i++) { if(n % i == 0) brojac++; } if(brojac > 2) prost = false; return prost; } vector<int> vektor_slozenih(vector<int> vektor) { vector<int> vektor_slozenih_brojeva; for(int i = 0; i < vektor.size(); i++) { if(!DaLiJeProst(vektor[i])) vektor_slozenih_brojeva.push_back(vektor[i]); } return vektor_slozenih_brojeva; } int main() { cout << "Unesite prirodan broj: "; int n; cin >> n; vector<int> vektor; for(int i = 0; i < n; i++) { int broj; cin >> broj; vektor.push_back(broj); } auto vektor_slozenih_brojeva = vektor_slozenih(vektor); for(int i : vektor_slozenih_brojeva) cout << i << " "; return 0; }

Page 43: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

38

#Zadatak 27. var. 2.

#include <iostream> #include <vector> typedef std::vector<int> vektor; vektor fnk(vektor n){ vektor v; for(int x : n) for(int i=2; i<x; i++) if(x%i==0) v.push_back(x); return v; } int main() { int n; std::cout << "Unesi n: "; std::cin >> n; vektor a; std::cout << "Unesi " << n << " elemenata vektora: "; for(int i=0; i<n; i++){ int unos; std::cin >> unos; a.push_back(unos); } vektor novi(fnk(a)); std::cout << "Novi vektor glasi: "; for(int i=0; i<int(novi.size()-1); i++) std::cout << novi.at(i) << " "; return 0; }

Page 44: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

39

#Zadatak 28. var. 1.

#include <iostream> #include <vector> using namespace std; vector<int> suma_brojeva(vector<int> vektor, int broj) { vector<int> suma; for(int i = 0; i <vektor.size(); i++) { int temp_suma = 0; while(vektor[i] != 0) { int cifra = vektor[i]%10; temp_suma += cifra; vektor[i] /= 10; } if(temp_suma> broj) suma.push_back(temp_suma); } return suma; } int main() { cout << "Unesite prirodan broj: "; int n; cin >> n; vector<int> vektor; for(int i = 0; i < n; i++) { int broj; cin >> broj; vektor.push_back(broj); } cout << "Unesite broj ogranicenja: "; int broj; cin >> broj; auto vektor_sume_brojeva = suma_brojeva(vektor, broj); for(int i : vektor_sume_brojeva) cout << i << " "; return 0; }

Page 45: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

40

#Zadatak 28. var. 2.

#include <iostream> #include <vector> typedef std::vector<int> vektor; vektor fnk(vektor v, int n){ vektor novi; for(int x : v){ int t=x, suma_cifara(0); while(x>0){ suma_cifara+=x%10; x/=10; } if(suma_cifara>n) novi.push_back(t); } return novi; } int main() { vektor v{34, 28, 1343, 612, 10, 8, 2}; vektor novi(fnk(v, 7)); for(int i=0; i<int(novi.size()); i++) std::cout << novi.at(i) << " "; return 0; }

Page 46: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

41

#Zadatak 29. var. 1.

#include <iostream> #include <vector> using namespace std; vector<int> lokalni_maksimum(vector<int> vektor) { vector<int> vektor_lokalnih_maksimuma; for(int i = 0; i < vektor.size(); i++) { if(vektor[i] > vektor[i+1] && vektor[i] > vektor[i-1]) vektor_lokalnih_maksimuma.push_back(vektor[i]); } return vektor_lokalnih_maksimuma; } int main() { cout << "Unesite prirodan broj: "; int n; cin >> n; vector<int> vektor; for(int i = 0; i < n; i++) { int broj; cin >> broj; vektor.push_back(broj); } auto vektor_lokalnih_maksimuma = lokalni_maksimum(vektor); for(int i : vektor_lokalnih_maksimuma) cout << i << " "; return 0; }

Page 47: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

42

#Zadatak 29. var. 2.

#include <iostream> #include <vector> typedef std::vector<int> vektor; vektor fnk(vektor v){ vektor novi; for(int i=1; i<int(v.size()-1); i++) if(v.at(i)>v.at(i-1) && v.at(i)> v.at(i+1)) novi.push_back(v.at(i)); return novi; } int main() { vektor v{1, 15, 6, 2, 2, 9, 3, 1, 5, 1}; vektor novi(fnk(v)); for(int i=0; i<int(novi.size()); i++) std::cout << novi.at(i) << " "; return 0; }

Page 48: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

43

#Zadatak 30. var. 1.

#include <iostream> #include <vector> using namespace std; bool oscilatoran(vector<double> vektor) { bool jest(true); for(int i = 0, j = i+1; i < vektor.size(), j < vektor.size(); i+=2, j+=2) { if(vektor[0] < vektor[1]) { if(vektor[i] > vektor[j]) jest = false; } else if(vektor[0] > vektor[1]) { if(vektor[i] < vektor[j]) jest = false; } } return jest; } int main() { vector<double> vektor; int n; do { cin >> n; vektor.push_back(n); } while(n != 0); if(oscilatoran(vektor)) cout << "Vektor je oscilatoran."; else cout << "Vektor nije oscilatoran."; return 0; }

Page 49: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

44

#Zadatak 31. var. 1.

#include <iostream> #include <vector> using namespace std; vector<int> OdstraniDuplikate(vector<int> vektor) { vector<int> bez_duplikata; for(int i = 0; i < vektor.size(); i++) { for(int j = i+1; j < vektor.size(); j++) { if(vektor[i] == vektor[j]) { for(int k = j; k < vektor.size()-1; k++) { vektor[k] = vektor[k+1]; } vektor.resize(vektor.size()-1); i--; } } } bez_duplikata = vektor; return bez_duplikata; } int BrojDuplikata(vector<int> vektor) { vector<int> brojac(10); for(int i = 0; i < vektor.size(); i++) { for(int j = i+1; j < vektor.size(); j++) { if(vektor[i] == vektor[j]) { brojac[vektor[j]]++; } } } int broj_ponavljanja(0); for(int i : brojac) { if(i != 0) broj_ponavljanja++; } return broj_ponavljanja; }

Page 50: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

45

int main() { cout << "Unesite prirodan broj: "; int n; cin >> n; vector<int> vektor; for(int i = 0; i < n; i++) { int broj; cin >> broj; vektor.push_back(broj); } auto vektor_bez_duplikata = OdstraniDuplikate(vektor); cout << "Vektor bez duplikata: "; for(int i : vektor_bez_duplikata) cout << i << " "; cout << endl; auto broj_duplikata = BrojDuplikata(vektor); cout << "Broj duplikata je " << broj_duplikata; return 0; }

Page 51: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

46

#Zadatak 31. var. 2.

#include <iostream> #include <vector> typedef std::vector<int> vektor; vektor OdstraniDuplikate(vektor v){ bool brojac; vektor novi; for(int x : v){ brojac = false; for(int i=0; i<int(novi.size()); i++) if(x==novi.at(i)) brojac = true; if(brojac==false) novi.push_back(x); } return novi; } int BrojDuplikata(vektor v){ int broj_ponavljanja(0),brojduplih(0); vektor a(OdstraniDuplikate(v)); for(int x:a){ broj_ponavljanja=0; for(int i=0; i<int(v.size()); i++) if(x==v.at(i)) broj_ponavljanja++; if(broj_ponavljanja>=2) brojduplih++; } return brojduplih; } int main() { vektor v; int unos, n; std::cout << "Unesi n: "; std::cin >> n; std::cout << "Unesi " << n << " elemenata vektora: "; for(int i=0; i<n; i++){ std::cin >> unos; v.push_back(unos); } vektor novi(OdstraniDuplikate(v)); for(int i=0; i<int(novi.size());i++) std::cout << novi.at(i) << " "; std::cout << std::endl << BrojDuplikata(v); return 0; }

Page 52: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

47

#Zadatak 32. var. 1.

#include <iostream> #include <vector> using namespace std; bool Prost(int n) { bool jest(true); int brojac(1); for(int i = 2; i <= n; i++) { if(n%i == 0) brojac++; } if(brojac > 2) jest = false; return jest; } vector<int> ProstiBrojevi(int n) { vector<int> vektor_prostih_brojeva; for(int i = 1; i <= n; i++) { if(Prost(i)) vektor_prostih_brojeva.push_back(i); } return vektor_prostih_brojeva; } vector<int> ProstiBrojeviBlizanci(int n) { vector<int> vektor_prostih_brojeva_blizanaca, vektor; for(int i = 1; i <= n; i++) { if(Prost(i)) vektor.push_back(i); } for(int i = 0; i < vektor.size(); i++) { if(vektor[i+1] - vektor[i] == 2) { vektor_prostih_brojeva_blizanaca.push_back(vektor[i]); vektor_prostih_brojeva_blizanaca.push_back(vektor[i+1]); } } return vektor_prostih_brojeva_blizanaca; } vector<int> ProstiFaktori(int n) { vector<int> vektor_prostih_faktora; for(int i = 2; i <= n; i++) {

Page 53: Zadaci za samostalno vježbanje 2. - Materijali za prvu ... · PDF fileDr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 2 Kolekcija

48

if((double)n/i == (int)n/i) { vektor_prostih_faktora.push_back(i); n /= i; i = 1; } } return vektor_prostih_faktora; } vector<int> Djelioci(int n) { vector<int> djelioci_broja; for(int i = 1; i <= n; i++) { if(n%i == 0) { djelioci_broja.push_back(i); } } return djelioci_broja; } int main() { cout << "Unesite prirodan broj: "; int n; cin >> n; auto vektor_prostih_brojeva = ProstiBrojevi(n); cout << "Prosti brojevi do broja " << n << endl; for(int i : vektor_prostih_brojeva) cout << i << " "; cout << endl; auto vektor_prostih_brojeva_blizanaca = ProstiBrojeviBlizanci(n); cout << "Prosti brojevi blizanci do broja " << n << endl; for(int i : vektor_prostih_brojeva_blizanaca) cout << i << " "; cout << endl; auto vektor_prostih_faktora = ProstiFaktori(n); cout << "Prosti faktori broja " << n << endl; for(int i : vektor_prostih_faktora) cout << i << " "; cout << endl; auto vektor_djelilaca_broja = Djelioci(n); cout << "Djelioci broja " << n << endl; for(int i : vektor_djelilaca_broja) cout << i << " "; return 0; }