Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski...

28
Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje prethodnog i utvrđivanje novog gradiva Akademska godina 2014/15 1 Zadaci za samostalno vježbanje 1. Za sve zadatke se zahtijeva rješenje u C++ stilu, tj. uz korištenje biblioteke “iostream”, objekata izlaznog i ulaznog toka “cout” i “cin”, biblioteke “cmath”, manipulatora za formatiranje ispisa, C++ operatora za pretvorbu tipova, itd. Svi zadaci dati ovdje su takvi da se mogu uraditi korištenjem isključivo gradiva Predavanja 1. i ranije stečenog predznanja na predmetu “Osnove računarstva”. Stoga, ovi zadaci uglavnom testiraju Vaše predznanje. 1. Napišite program koji traži da sa tastature unesemo podatke o dva vremenska trenutka, u satima, minutama i sekundama, a koji računa i ispisuje vrijeme koje je proteklo između ta dva vremenska trenutka, također u satima, minutama i sekundama. Pretpostaviti da je drugi vremenski trenutak uvijek nakon prvog. Na primjer, dijalog nakon pokretanja programa može da izgleda poput sljedećeg: Unesi prvo vrijeme (h min s): 14 15 7 Unesi drugo vrijeme (h min s): 16 9 34 Između ova dva trenutka proteklo je 1h 54min 27s. Uputa: Jedan način rješavanja mogao bi biti sljedeći: pretvorite oba unesena vremena u broj sekundi. Na primer, imamo 14h 15min 7s = 51307s i 16h 9min 34s = 58174s. Oduzmite broj sekundi da dobijete broj sekundi između ovih trenutaka (6867s u zadanom primjeru). Konačno, razložite dobijeni broj sekundi ponovo na sate, minute i sekunde (6867s = 1h 54min 27s) 2. Napišite program koji traži da se sa tastature unese brzina broda u čvorovima koja se zadaje isključivo kao cijeli broj (obavezno koristiti promjenljivu tipa “int”), a zatim izračunava i ispisuje brzinu broda u km/h kao decimalan broj. Koristite činjenicu da je čvor morska milja na sat, a da je jedna morska milja 1852 m (ovaj podatak obavezno definirati u programu kao konstantu). Na primjer, ukoliko se kao brzina broda unese broj 20, program treba da ispiše rezultat 37.04 jer je 20 čvorova = 37.04 km/h. 3. Napišite program koji traži da se sa tastature unese neki podatak, a koji u zavisnosti od toga kakav je uneseni podatak ispisuje jedan od sljedećih pet komentara: Uneseni podatak je prirodan broj. Uneseni podatak je cijeli broj, ali nije prirodan. Uneseni podatak je realan broj, ali nije cijeli. Uneseni podatak nije broj. Obavezno testirajte sve navedene slučajeve. Uputa: Prvo probajte unijeti podatak u realnu promjenljivu, a zatim testirajte ispravnost ulaznog toka. Ukoliko tok nije ispravan, podatak nije broj. Cijelost broja ćete testirati ispitivanjem da li se odsjecanjem decimala (tj. konverzijom u cjelobrojnu vrijenost) zadržava ista vrijednost. 4. Dvije firme nude usluge priključenja na Internet, pri čemu prva firma traži fiksnu pretplatu od 10 KM plus 50 feninga po svakom potrošenom satu, dok druga firma ne traži fiksnu pretplatu, ali traži 80 feninga po svakom potrošenom satu. Napišite program koji od korisnika traži da unese željeni broj sati a nakon toga da mu preporuči koja je firma isplatnija za njegove potrebe. Na primjer, za 15 sati isplatnija je druga firma (jer je 10 + 15 0.5 = 17.5 > 15 0.8 = 12), dok je za 40 sati isplatnija prva firma (jer je 10 + 40 0.5 = 30 < 40 0.8 = 32). 5. Napišite program koji traži da se sa tastature unesu tri realna broja, a koji zatim ispisuje da li ta tri broja mogu biti stranice nekog pravouglog trougla. Napomena: ne zna se koji od tri unesena broja predstavljaju katete, a koji hipotenuzu, tako da program treba da ponudi potvrdan odgovor kako na trojku brojeva 3, 4, 5, tako i na trojku brojeva 5, 4, 3 ili 3, 5, 4. Obavezno testirajte program i na ulaznim podacima 0.3, 0.4 i 0.5! 6. Napišite program koji traži da se unesu koeficijenti a, b i c kvadratne jednačine a x 2 + b x + c = 0 a koji zatim računa i ispisuje njena rješenja. Program napraviti tako da se pri svakom unosu koeficijenta uvijek čitaju “svježi” podaci, bez obzira što je pri unosu prvog koeficijenta korisnik eventualno odmah unio tri podatka (uputa: koristite “cin.ignore”). Predvidite i mogućnost postojanja kompleksnih rješenja, koje ćete ispisivati kao uređene parove realnih brojeva. Program treba da predvidi i sve specijalne slučajeve (za a = 0, jednačina se svodi na linearnu, tako da imamo samo jedno rješenje, ukoliko je ujedno b 0; za a = b = 0 i c 0 nema rješenja, dok je za a = b = c = 0 jednačina identički zadovoljena za svaku vrijednost x).

Transcript of Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski...

Page 1: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

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

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

1

Zadaci za samostalno vježbanje 1. Za sve zadatke se zahtijeva rješenje u C++ stilu, tj. uz korištenje biblioteke “iostream”, objekata izlaznog i ulaznog toka “cout” i “cin”, biblioteke “cmath”, manipulatora za formatiranje ispisa, C++ operatora za pretvorbu tipova, itd. Svi zadaci dati ovdje su takvi da se mogu uraditi korištenjem isključivo gradiva Predavanja 1. i ranije stečenog predznanja na predmetu “Osnove računarstva”. Stoga, ovi zadaci uglavnom testiraju Vaše predznanje.

1. Napišite program koji traži da sa tastature unesemo podatke o dva vremenska trenutka, u satima, minutama i sekundama, a koji računa i ispisuje vrijeme koje je proteklo između ta dva vremenska trenutka, također u satima, minutama i sekundama. Pretpostaviti da je drugi vremenski trenutak uvijek nakon prvog. Na primjer, dijalog nakon pokretanja programa može da izgleda poput sljedećeg:

Unesi prvo vrijeme (h min s): 14 15 7

Unesi drugo vrijeme (h min s): 16 9 34

Između ova dva trenutka proteklo je 1h 54min 27s.

Uputa: Jedan način rješavanja mogao bi biti sljedeći: pretvorite oba unesena vremena u broj sekundi. Na primer, imamo 14h 15min 7s = 51307s i 16h 9min 34s = 58174s. Oduzmite broj sekundi da dobijete broj sekundi između ovih trenutaka (6867s u zadanom primjeru). Konačno, razložite dobijeni broj sekundi ponovo na sate, minute i sekunde (6867s = 1h 54min 27s)

2. Napišite program koji traži da se sa tastature unese brzina broda u čvorovima koja se zadaje isključivo kao cijeli broj (obavezno koristiti promjenljivu tipa “int”), a zatim izračunava i ispisuje brzinu broda u km/h kao decimalan broj. Koristite činjenicu da je čvor morska milja na sat, a da je jedna morska milja 1852 m (ovaj podatak obavezno definirati u programu kao konstantu). Na primjer, ukoliko se kao brzina broda unese broj 20, program treba da ispiše rezultat 37.04 jer je 20 čvorova = 37.04 km/h.

3. Napišite program koji traži da se sa tastature unese neki podatak, a koji u zavisnosti od toga kakav je uneseni podatak ispisuje jedan od sljedećih pet komentara:

Uneseni podatak je prirodan broj. Uneseni podatak je cijeli broj, ali nije prirodan. Uneseni podatak je realan broj, ali nije cijeli. Uneseni podatak nije broj.

Obavezno testirajte sve navedene slučajeve. Uputa: Prvo probajte unijeti podatak u realnu promjenljivu, a zatim testirajte ispravnost ulaznog toka. Ukoliko tok nije ispravan, podatak nije broj. Cijelost broja ćete testirati ispitivanjem da li se odsjecanjem decimala (tj. konverzijom u cjelobrojnu vrijenost) zadržava ista vrijednost.

4. Dvije firme nude usluge priključenja na Internet, pri čemu prva firma traži fiksnu pretplatu od 10 KM plus 50 feninga po svakom potrošenom satu, dok druga firma ne traži fiksnu pretplatu, ali traži 80 feninga po svakom potrošenom satu. Napišite program koji od korisnika traži da unese željeni broj sati a nakon toga da mu preporuči koja je firma isplatnija za njegove potrebe. Na primjer, za 15 sati isplatnija je druga firma (jer je 10

+

15

∙ 0.5 = 17.5 > 15

∙ 0.8 = 12), dok je za 40 sati isplatnija prva firma (jer je

10 +

40

∙ 0.5 = 30 < 40

∙ 0.8 = 32).

5. Napišite program koji traži da se sa tastature unesu tri realna broja, a koji zatim ispisuje da li ta tri broja mogu biti stranice nekog pravouglog trougla. Napomena: ne zna se koji od tri unesena broja predstavljaju katete, a koji hipotenuzu, tako da program treba da ponudi potvrdan odgovor kako na trojku brojeva 3, 4, 5, tako i na trojku brojeva 5, 4, 3 ili 3, 5, 4. Obavezno testirajte program i na ulaznim podacima 0.3, 0.4 i 0.5!

6. Napišite program koji traži da se unesu koeficijenti a, b i c kvadratne jednačine a x

2 + b

x + c = 0 a koji

zatim računa i ispisuje njena rješenja. Program napraviti tako da se pri svakom unosu koeficijenta uvijek čitaju “svježi” podaci, bez obzira što je pri unosu prvog koeficijenta korisnik eventualno odmah unio tri podatka (uputa: koristite “cin.ignore”). Predvidite i mogućnost postojanja kompleksnih rješenja, koje ćete ispisivati kao uređene parove realnih brojeva. Program treba da predvidi i sve specijalne slučajeve (za a

=

0, jednačina se svodi na linearnu, tako da imamo samo jedno rješenje, ukoliko je ujedno b

0;

za a =

b

=

0 i c

0 nema rješenja, dok je za a

=

b

=

c

=

0 jednačina identički zadovoljena za svaku

vrijednost x).

Page 2: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

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

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

2

7. Napišite program koji traži da se sa tastature unese iznos glavnice G i kamatna stopa p. Program treba da

izračuna iznos kamata K po formuli K =

G

p

/100 i novu svotu S

=

G

+

K i nakon toga treba da ispiše sve

unesene i izračunate podatke u sređenom obliku sa svim brojevima poravnatim uz desnu ivicu (sve cifre jedinica treba da budu jedna ispod druge). Na primjer, ukoliko se unese G = 1000 i p = 5, ispis treba da bude poput sljedećeg:

Glavnica: 1000

Kamatna stopa: 5

Kamate: 50

Nova svota: 1050

a ako unesemo G = 55000 i p = 12, ispis treba da bude

Glavnica: 55000

Kamatna stopa: 12

Kamate: 6600

Nova svota: 61600

Pretpostavite da nijedna veličina neće preći širinu od 6 cifara. Eventualne decimalne rezultate zaokružite,

tako da za G = 3530 i p = 7, kamate trebaju biti K = 247 a ne 247.1.

8. Napišite program koji traži da se sa tastature unese 6 brojeva, a koji zatim ispisuje da li su svi uneseni brojevi pozitivni i da li među njima ima neparnih brojeva. Za realizaciju programa ne koristiti nizove niti druge srodne strukture podataka. Program testirajte na slijedećim karakterističnim primjerima:

Primjer 1: 2 6 10 18 8 6 Primjer 2: 4 –12 10 18 –18 10 Primjer 3: 3 5 4 19 7 12 Primjer 4: –3 9 15 –7 13 11

9. Napišite program koji za cijeli broj unesen sa tastature ispisuje sve njegove proste faktore razdvojene razmacima, pri čemu se svaki prosti faktor javlja onoliko puta koliko učestvuje u tom broju. Na primer, ukoliko se unese broj 290472, program treba da ispiše 2 2 2 3 7 7 13 19, jer rastava ovog broja na proste faktore glasi 290472 = 2

3 ∙ 3

∙ 7

2 ∙ 13

∙ 19.

10. Napišite program koji traži da se unese realan broj x i prirodan broj n, a zatim računa i ispisuje vrijednost sume

S =

n

k

k

kxx1

)(

)1(

Na primjer, za x = 2 i n = 5 program treba da izbaci rezultat –0.129762. U programu nije dozvoljeno

koristiti funkciju “pow”. Također, u programu ne smije da bude više od jedna petlja.

11. Iz matematičke analize je poznato da je za dovoljno veliko n vrijednost sume

S =

n

k

k

k

x

0!

približno jednaka vrijednosti funkcije F = e x, s obzirom da za n

vrijednost sume S konvergira ka F

(s obzirom da je S Taylorov razvoj funkcije F, koji konvergira za svaku vrijednost x). Napišite program koji za zadanu vrijednost x određuje minimalnu vrijednost n takvu da se S i F poklapaju na barem prvih 5 decimala (tj. da je |

S

F

| < 10

–5). Program treba da ispiše nađenu vrijednost n, kao i odgovarajuće

vrijednosti S i F (da bi se uvjerili da se one zaista poklapaju barem na prvih 5 decimala). Pri računanju

sume S nije dozvoljeno posebno računati faktorijel niti koristiti funkciju “pow” za računanje stepena x k,

već treba iskoristiti ovisnost koja postoji između k-tog i k+1-vog člana sume.

12. Napišite program koji zahtijeva da se sa tastature unose realni brojevi sve dok se ne unese broj 0. Nakon toga, program treba da ispiše aritmetičku i geometrijsku sredinu unesenih brojeva, ne računajući unesenu nulu. Na primjer, ukoliko se unesu brojevi 3, 8, 5.4, 2.13, 7 i 0, aritmetička sredina treba da bude 5.106, a geometrijska sredina 4.54168. Pri tome, u programu nije dozvoljeno koristiti nizove.

Page 3: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

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

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

3

13. Za neki broj kažemo da je savršen ukoliko je jednak sumi svih svojih djelilaca. Na primjer, 28 je savršen broj: njegovi djelioci su 1, 2, 4, 7 i 14, a 1 + 2 + 4 + 7 + 14 = 28. Napisati program koji traži da se sa tastature unese cijeli brojevi a i b, a koji zatim ispisuje sve savršene brojeve u opsegu od a do b. Kao provjeru ispravnosti programa možete koristiti činjenicu da su jedini savršeni brojevi u opsegu od 1 do 100 brojevi 6 i 28.

14. Za neki broj kažemo da je palindroman ukoliko je jednak broju koji se dobije čitanjem njegovih cifara u

obrnutom poretku. Na primjer, broj 6574756 je palindroman broj. Napisati program koji traži da se sa tastature unese cijeli broj n, a zatim na ekran ispisuje da li je broj n palindroman ili nije. Za realizaciju programa ne koristiti nizove.

15. Napišite program koji traži da se sa tastature unesu cijeli brojevi n i m, a koji zatim iscrtava na ekranu

pravougaonik sastavljen od zvjezdica čije su dužine stranica respektivno n i m. Na primjer, za n =

15 i

m =

5, ispis na ekranu treba da izgleda kao

***************

* *

* *

* *

***************

16. Napišite program koji traži da se sa tastature unese cijeli broj n, a zatim iscrtava na ekranu jednakostranični trougao sastavljen od zvjezdica čija je osnovica horizontalna a vrh usmjeren nagore. Na primjer, ukoliko se unese n = 4, ispis na ekranu treba da izgleda kao

*

***

*****

*******

17. Napišite program koji traži od korisnika da unese prirodne brojeve m i n, pri čemu je m > n. Nakon toga, program treba da na ekranu iscrta figuru oblika “<–>” sastavljenu od zvjezdica, čija je širina m a visina n znakova. Na primjer, za m = 15 i n = 7, prikaz na ekranu treba izgledati ovako:

* *

* *

* *

*****************

* *

* *

* *

18. Napišite program koji traži od korisnika da unese prirodne brojeve m i n, pri čemu je m > n. Nakon toga,

program treba da na ekranu iscrta figuru oblika “>–<” sastavljenu od zvjezdica, čija je širina M a visina N znakova. Na primjer, za M=15 i N=7, prikaz na ekranu treba izgledati ovako:

* *

* *

* *

*********

* *

* *

* *

19. Napišite program koji traži od korisnika da unese cijele brojeve m i n. Nakon toga, program treba da

iscrta figuru “pješčani sat” sastavljnu od zvjezdica, pri čemu su m i n redom širina i visina figure. Pretpostavite da je n < m i m < 20. Također, radi jednostavnosti, pretpostavite da je visina n neparan broj. Na primjer, za m = 10 i n = 7 prikaz na ekranu treba izgledati ovako:

**********

* *

* *

* *

* *

* *

**********

Page 4: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

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

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

4

20. Napišite program koji traži da se sa tastature unese prirodan broj n ne manji od 5 i ne veći od 24, a koji zatim na ekranu iscrtava šaru koja izgleda poput šare na sljedećoj slici, koja prikazuje primjer za n = 10:

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

| |

| +------------+ |

| | | |

| | | |

| | | |

| | | |

| +------------+ |

| |

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

Preciznije, šara se sastoji od pravougaonika dimenzija n

2n znakova sastavljenog od znakova “+”, “-”

i “|”, unutar kojeg se nalazi drugi manji pravougaonik koji je od većeg pravougaonika razdvojen praznim slojem debljine jednog praznog mjesta po visini, a dva prazna mjesta po širini.

21. Napišite program koji će prvo tražiti od korisnika da unese realan broj x, i stepen polinoma N, a zatim

koeficijente polinoma aN, aN–1, aN–2, ... a2, a1, a0 (počev od koeficijenta uz najveći stepen). Nakon toga, program treba da izračuna i ispiše vrijednost polinoma

P(x) = aN xN + aN–1 x

N–1 + aN–2 x

N–2 + ... + a2 x

2 + a1 x + a0

U programu ne treba koristiti nizove, s obzirom da se vrijednost polinoma može lako izračunati u “hodu” (tj. bez potrebe za pamćenjem koeficijenata). Najboljim rješenjem će se smatrati rješenje koje ne koristi ni funkciju za stepenovanje, s obzirom da se polinom P(x) može veoma jednostavno izračunati bez stepenovanja pomoću Hornerove sheme:

P(x) = ((...((aN x + aN–1) x + aN–2) x + ... + a2) x + a1) x + a0

22. Napišite program koji ce prvo tražiti od korisnika da unese prirodan broj N, a zatim N realnih brojeva a1, a2, ... aN. Nakon toga, program treba da izračuna i ispiše vrijednost izraza

naaaaaaaaaa

...

1...

111

321321211

Program ne treba koristiti nizove (uputa: neka jedna promjenljiva čuva sumu do tada unesenih brojeva, a

druga sumu do tada formiranih razlomaka)!

23. Napišite program koji traži da se unese prirodan broj n, a zatim računa i ispisuje vrijednost izraza (verižnog razlomka)

Y =

n

1...

13

12

11

1

Na primjer, za n = 3 treba da se dobije rezultat 0.7, jer je

Y| n=3 =

3

12

11

1

=

7

31

1

= 10

7 = 0.7

24. Napišite program koji traži da se sa tastature unesu dva prirodna broja n i m, a koji će zatim ispisati sve

proste brojeve između n i m uključivo.

Page 5: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

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

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

5

25. Napišite program koji za prirodan broj n unesen sa tastature nalazi i ispisuje n-ti po redu prost broj. Na primjer, ukoliko se unese n = 30, program treba da ispiše 113, jer je 113 trideseti po redu prost broj.

26. Napišite program koji traži da se sa tastature unesu dva prirodna broja a i b, i koji ispisuje broj brojeva u rasponu od a i b (uključujući i a i b) koji su djeljivi sumom svojih cifara (takav je, na primjer, broj 351, jer je djeljiv sa 3

+

5

+

1 = 9). Kao neke karakteristične vrijednosti za testiranje mogu vam poslužiti

slijedeći rezultati:

a b Rezultat

10 50 14

100 1000 181 351 351 1

352 353 0

10000 20000 1417

100000 200000 11167

27. Napišite program koji traži da se sa tastature unesu prirodni brojevi n1 i n2, a koji će zatim ispisati

tabelu sa dvije kolone, od kojih prva kolona sadrži prirodne brojeve od n1 do n2 uključivo, a druga kolona sumu svih djelilaca odgovarajućih brojeva iz prve kolone. Na primjer, ukoliko je u prvoj koloni broj 10, u drugoj koloni treba da bude broj 18, jer djelioci broja 10 glase 1, 2, 5 i 10, a njihova suma je 1

+

2

+

5

+

10 = 18). Tablicu formatirajte po vlastitom izboru, ali tako da ispisani brojevi budu lijepo

poravnati uz desnu ivicu.

28. Napišite funkciju “stepen” sa dva parametra x i n koja računa i vraća kao rezultat xn bez korištenja

funkcije “pow” pri čemu su x i n cijeli brojevi proizvoljnog znaka (posebno obratite pažnju da n može

biti i negativan). Drugim riječima, napišite funkciju koja radi slično kao funkcija “pow” iz biblioteke “cmath” samo za cijele brojeve, bez upotrebe ijedne funkcije iz biblioteke “cmath”. Na primjer, ukoliko se izvrše slijedeće naredbe

cout << stepen (2, 5) << endl;

cout << stepen (10, –3)

cout << stepen (4) << endl;

na ekranu treba da budu ispisani brojevi 32 (25), 0.001 (10

–3) i 16 (4

2). Također napišite i kratki glavni

program (funkciju “main”) u kojoj ćete demonstrirati napisanu funkciju na brojevima koji se unose sa tastature.

29. Još je Heronu prije 2000 godina bio poznat sljedeći postupak (algoritam) za računanje kvadratnog

korijena proizvoljnog broja x: formira se niz brojeva a0, a1, a2 itd. po sljedećem pravilu:

a0 = 1; ak+1 = (ak + x / ak)

/ 2 za k

>

0

Ovaj niz konvergira vrlo brzo ka korijenu iz x. U praksi je dovoljno izračunati samo nekoliko elemenata ovog niza, jer se vrlo brzo elementi počinju praktično ponavljati (sa onolikom tačnošću koliku dopušta realni tip podataka). Tada postupak možemo obustaviti, i posljednju izračunatu vrijednost ak proglasiti traženim korijenom. Napišite funkciju “korijen” koja računa korijen svog argumenta Heronovim postupkom. Za realizaciju funkcije ne koristiti nizove. Napisanu funkciju testirajte u glavnom programu koji za argument unesen sa tastature ispisuje vrijednosti korijena korištenjem funkcije “korijen” kao i korištenjem ugrađene funkcije “sqrt” (naravno, rezultati treba da budu isti).

Page 6: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

1

#Zadatak 1. ver.1

#include <iostream> int main() { int h1, m1, s1, h2, m2, s2; std::cout << "Unesite prvo vrijeme (h min s): "; std::cin >> h1 >> m1 >> s1; std::cout << "Unesite drugo vrijeme (h min s): "; std::cin >> h2 >> m2 >> s2; int t1=s1+m1*60+h1*3600; int t2=s2+m2*60+h2*3600; int t; (t1<t2)? t=t2-t1 : t=t1-t2; int h= t/3600; int minu= ((double)t/3600-h)*60; int s= t-h*3600-minu*60; std::cout << "Izmedu ova dva trenutka proteklo je " << h << "h " << minu << "min " << s << "s.\n"; return 0; }

#Zadatak 1. ver.2

#include <iostream> int main() { int h1, m1, s1; int h2, m2, s2; std::cout<<"Unesi prvo vrijeme: "; std::cin>>h1>>m1>>s1; std::cout<<"Unesi drugo vrijeme: "; std::cin>>h2>>m2>>s2; int suma1=0; int suma2=0; suma1=h1*3600+m1*60+s1; suma2=h2*3600+m2*60+s2; int suma=suma2-suma1; int h3=suma/3600; int m3; int suma_temp=suma%3600; m3=suma_temp/60; int s3; s3=suma-h3*3600-m3*60; std::cout<<"Razlika vremena je: "<<h3<<" "<<m3<<" "<<s3; return 0; }

Page 7: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

2

#Zadatak 2. ver.1

#include <iostream> const int milja(1852); int main() { int brzina; std::cout << "Unesite brzinu broda u cvorovima: "; std::cin >> brzina; std::cout << "Brzina u km/h je: " << (double)brzina*milja/1000 << std::endl; return 0; }

#Zadatak 2. ver.2

#include <iostream> int main() { const int cvor_metar=1852; int x; std::cout<<"Unesi brzinu broda u cvorovima: "; std::cin>>x; float temp=x*cvor_metar; float brzina=temp/1000; std::cout<<"Brzina u km/h iznosi: "<<brzina; return 0; }

#Zadatak 3.

#include <iostream> int main() { std::cout<<"Unesi neki podatak: "; float x; std::cin>>x; if(!std::cin) std::cout<<"Podatak nije broj!"; if(x==int(x)) { if(x>0) std::cout<<"Podatak je prirodan broj"; if(x<=0) std::cout<<"Podatak je cijeli broj, ali nije prirodan"; } else std::cout<<"Podatak je realan broj, ali nije cijeli"; return 0; }

Page 8: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

3

#Zadatak 4. ver.1.

#include <iostream> int main() { int t; std::cout << "Unesite broj sati: "; std::cin >> t; double A = 10 + 0.5*t; double B = 0.8*t; (A>B)? std::cout << "Isplatnija je druga firma." : std::cout << "Isplatnija je prva firma."; return 0; }

#Zadatak 4. ver.2.

#include <iostream> int main() { std::cout<<"Unesi zeljeni broj sati: "; int sati; std::cin>>sati; int fix=10; float f1=0.5; float f2=0.8; float suma1=0, suma2=0; suma1+=fix+sati*f1; suma2+=sati*f2; if(suma2>suma1) std::cout<<"Prva firma je isplativija"; else if(suma1>suma2) std::cout<<"Druga firma je isplativija"; else std::cout<<"Isto lave"; return 0; }

#Zadatak 5. ver.1.

#include <iostream> int main() { double a,b,c; std::cout << "Unesite tri broja: "; std::cin >> a >> b >> c; (a*a == b*b + c*c || b*b == a*a + c*c || c*c == a*a + b*b)? std::cout << "Uneseni brojevi odgovaraju stranicama pravouglog trougla.\n" : std::cout << "Uneseni brojevi ne mogu biti duzine stranica pravouglog trougla.\n"; return 0; }

Page 9: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

4

#Zadatak 5. ver.2.

#include <iostream> int main() { std::cout<<"Unesi tri realna broja: "<<std::endl; double a, b, c; std::cin>>a>>b>>c; if(a*a+b*b==c*c || a*a+c*c==b*b || a*a==b*b+c*c) { std::cout<<"Stranice cine pravougli trougao"; } else std::cout<<"Stranice ne cine pravougli trougao"; return 0; }

#Zadatak 6. ver.1.

#include <iostream> #include <cmath> #include <iomanip> double unos(){ int koeficijent; std::cout << "Unesite koeficijent: "; std::cin >> koeficijent; std::cin.ignore(10000, '\n'); return koeficijent; } int main() { double a = unos(); double b = unos(); double c = unos(); double d = b*b-4*a*c; if(a==0 && b!=0){ double x = -c/b; std::cout << std::endl << "Jednacina ima samo jedno rjesenje.\n" << "x = " << std::setprecision(4) << x <<std::endl; } else if(a==0 && b==0 && c!=0) std::cout << "Jednacina nema rjesenja.\n"; else if(a==0 && b==0 && c==0) std::cout << "Jednacina identicki zadovoljena za svaku vrijednost x.\n"; else if(d>=0){ double x1 = (-b-std::sqrt(d))/(2*a); double x2 = (-b+std::sqrt(d))/(2*a); std::cout << std::endl << "Rjesenja jednacine su:\n" << std::setprecision(4) << "x1 = " << x1 << std::endl << "x2 = " << x2 << std::endl; } else if(d<0){ double Re = (-b/(2*a)); double Im = std::fabs(std::sqrt(-d)/ (2*a)); std::cout << std::endl << "Rjesenja jednacine su:\n" << std::setprecision(4) << "x1 = " << Re << " - " << Im << "i\n" << "x2 = " << Re << " + " << Im << "i\n"; } return 0; }

Page 10: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

5

#Zadatak 6. ver.2.

#include <iostream> #include <cmath> int main() { std::cout<<"Unesi koeficijente kvadratne jednacine ax^2+bx+c=0"<<std::endl; int a, b, c, D; std::cin>>a; std::cin.ignore(10000,'\n'); std::cin>>b; std::cin.ignore(10000,'\n'); std::cin>>c; std::cin.ignore(10000,'\n'); D=b*b-4*a*c; if(a==b && a==0 && c!=0) std::cout<<"Jednacina nema rjesenja"; if(a==b && b==c && b==0) std::cout<<"Jednacina ima beskonacno mnogo rjesenja"; if(D==0) { double x; x=(-b)/(2*a); std::cout<<"Jednacina ima jedno rjesenje: "<<x; } if(D>0) { double x1, x2; x1=(-b-sqrt(D))/(2*a); x2=(-b+sqrt(D))/(2*a); std::cout<<"Jednacina ima dva rjesenja: "<<x1<<" i "<<x2; } if(D<0) { double x1_re, x2_re, x1_im, x2_im; x1_re=(-b)/(2*a); x1_im=-(sqrt(D*(-1))); x2_re=(-b)/(2*a); x2_im=(sqrt(D*(-1))); std::cout<<"Jednacina ima dva rjesenja: "<<x1_re<<" + ("<<x1_im<<"*i)"<<" i "<<x2_re<<" + "<<x2_im<<"*i"; } return 0; }

Page 11: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

6

#Zadatak 7. ver.1.

#include <iostream> #include <iomanip> int main() { int G, p, K, S; std::cout << "Glavnica: "; std::cin >> G; if(!std::cin){ std::cout << "Niste unijeli broj."; return 0; } std::cout << "Kamatna stopa: "; std::cin >> p; if(!std::cin){ std::cout << "Niste unijeli broj."; return 0; } K = G*p/100; S = G+K; std::cout << "Kamate: " << std::right << std::setw(15) << K << std::endl << "Nova svota: " << std::right << std::setw(15) << S << std::endl; return 0; }

#Zadatak 7. ver.2.

#include <iostream> int main() { std::cout<<"Unesi iznos glavnice: "; int G; std::cin>>G; int p; std::cout<<"Unesi iznos kamatne stope: "; std::cin>>p; int K(G*p/100); int S(G+K); std::cout.width(20); std::cout<<std::left<<"Glavnica: "; std::cout.width(6); std::cout<<std::right<<G<<std::endl; std::cout.width(20); std::cout<<std::left<<"Kamatna stopa: "; std::cout.width(6); std::cout<<std::right<<p<<std::endl; std::cout.width(20); std::cout<<std::left<<"Kamate: "; std::cout.width(6); std::cout<<std::right<<K<<std::endl; std::cout.width(20); std::cout<<std::left<<"Nova svota: "; std::cout.width(6); std::cout<<std::right<<S<<std::endl; return 0; }

Page 12: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

7

#Zadatak 8. ver.1.

#include <iostream> int main() { int a,b,c,d,e,f; std::cout << "Unesite sest brojeva: "; std::cin >> a >> b >> c >> d >> e >> f; (a>0 && b>0 && c>0 && d>0 && e>0 && f>0)? std::cout << "Svi brojevi su pozitivni.\n" : std::cout << "Nisu svi brojevi pozitivni.\n"; (a%2==0 && b%2==0 && c%2==0 && d%2==0 && e%2==0 && f%2==0)? std::cout << "Svi brojevi su parni.\n" : std::cout << "Medju unesenim brojevima ima neparnih brojeva.\n"; return 0; }

#Zadatak 8. ver.2.

#include <iostream> int main() { int x; int br(0), br_1(0), br_2(0); std::cout<<"Unesi 6 cijelih brojeva: "; do { std::cin>>x; br++; if(x>0) { br_1++; if(x%2!=0) br_2++; } }while(br<6); if(br_1==6) { if(br_2!=0) std::cout<<"Svi brojevi su pozitivni i ima neparnih"; else std::cout<<"Svi brojevi su pozitivni"; } return 0; }

Page 13: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

8

#Zadatak 9. ver.1.

#include <iostream> int _main() { int a, br; std::cout << "Unesite broj: "; std::cin >> a; for(int i=2; i<=a; i++) if(a%i==0){ br=0; for(int j=2; j<i; j++) if(i%j==0 && i!=2) br++; if(br==0) while(a%i==0){ std::cout << i << " "; a/=i; } } return 0; }

#Zadatak 9. ver.2.

#include <iostream> int main() { std::cout<<"Unesi cijeli broj: "; int x; std::cin>>x; for(int i=2;i<=x;i++) if(x%i==0) { x=x/i; std::cout<<i<<" "; i--; } return 0; }

Page 14: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

9

#Zadatak 10. ver.1.

#include <iostream> int main() { double x, S(0); unsigned int n; std::cout << "Unesi realan broj x: "; std::cin >> x; std::cout << "Unesi prirodan broj n: "; std::cin >> n; for(unsigned int k=1; k<=n; k++){ double br = 1; for(int i=0; i<k; i++) br*=(-1); S += br/(x*(x+k)); } std::cout << "Suma je: " << S << std::endl; return 0; }

#Zadatak 10. ver.2.

#include <iostream> int main() { std::cout<<"Unesi realan broj x: "; double x; std::cin>>x; std::cout<<"Unesi prirodan broj n: "; int n; std::cin>>n; double suma{}; for(int i=1;i<=n;i++) { if(i%2==0) suma+=1/(x*(x+i)); else suma+=(-1)/(x*(x+i)); } std::cout<<"suma je: "<<suma; return 0; }

Page 15: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

10

#Zadatak 12. ver.1.

#include <iostream> #include <iomanip> int main() { int n,m; std::cout << "Unesite n i m: "; std::cin >> n >> m; std::cout << std::setw(n+1) << std::setfill('*') << " " << std::endl; for(int i=0;i<m-1;i++) std::cout << "*" << std::setw(n-1) << std::setfill(' ') << "*" << std::endl; std::cout << std::setw(n+1) << std::setfill('*') << " " ; return 0; }

#Zadatak 12. ver.2.

#include <iostream> int main() { std::cout<<"Unesi dva cijela broja da napravimo pravougaonik od zvjezdica hehe: "; int n, m; std::cin>>n>>m; for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { if(i==0 || i==m-1 || j==0 || j==n-1) std::cout<<"*"; else std::cout<<" "; } std::cout<<std::endl; } return 0; }

Page 16: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

11

#Zadatak 13. ver.1.

#include <iostream> int main() { int n; std::cout << "Unesi n: "; std::cin >> n; for(int i=0; i<n; i++){ for(int j=1; j<2*n; j++) (j<n-i || j>n+i)? std::cout << " " : std::cout << "*"; std::cout << "\n"; } return 0; }

#Zadatak 13. ver.2.

#include <iostream> int main() { std::cout<<"Unesi cijeli broj: "; int n; std::cin>>n; int br=n-1; int br1{}; for(int i{};i<n;i++) { for(int j{};j<(2*n-1);j++) { if((j>(br-1) && j<((2*n-1)-br)&&i==br1)) std::cout<<"*"; else std::cout<<" "; } std::cout<<std::endl; br--; br1++; } return 0; }

Page 17: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

12

#Zadatak 14.

#include <iostream> int main() { std::cout<<"Unesi dva prirodna broja i pazi da je prvi veci od drugog: "; int m, n; std::cin>>m>>n; if(n>m) std::cout<<"Jebiga ne slusas me"; else { int br((n-1)/2); int br1(0); int br2; for(int i(0);i<n;i++) { for(int j(0);j<m;j++) { if(i==(n-1)/2 || j==br || j==m-1-br || (i>(n-1)/2 && (j==br1-1 || j==m-br1))) std::cout<<"*"; else std::cout<<" "; } std::cout<<std::endl; br--; if(br==0) br2=0; if(br2==0) br1++; } } return 0; }

Page 18: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

13

#Zadatak 15.

#include <iostream> int main() { std::cout<<"Unesi dva prirodna broja i pazi da je prvi veci od drugog: "; int m, n; std::cin>>m>>n; if(n>m) std::cout<<"Lave pazi malo bolje"; else { int k((n-1)/2); int br(0); int br1; int br2((n-1)/2); for(int i(0);i<n;i++) { for(int j(0);j<m;j++) { if((i<k && i==br && (j==br || j==m-1-br)) || (i==k && (j>k-1 && j<m-k)) || (i>k && i==br && (j==br2+1 || j==m-2-br2))) std::cout<<"*"; else std::cout<<" "; } std::cout<<std::endl; br++; if(br==k) br1=86; if(br1==86) br2--; } } return 0; }

Page 19: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

14

#Zadatak 16.

#include <iostream> int main() { std::cout<<"Unesi cijele brojeva m i n(sirina i visina): "; int m, n; std::cin>>m>>n; if(m>=20 || n>m){ std::cout<<"Hajd izadji sad cu te ukinut"; return 0;} int k((n-1)/2); int br((n-1)/2); int br1; for(int i(0);i<n;i++) { for(int j(0);j<m;j++) { if(i==0 || i==n-1 || (i<=k && (j==i || j==n+2-i)) || (i>k && (j==br || j==n+2-br))) //ne kontam bas zasto n+2 ali tako je jedino radilo std::cout<<"*"; else std::cout<<" "; } std::cout<<std::endl; if(i==k) br1=86; if(br1==86) br--; } return 0; }

Page 20: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

15

#Zadatak 17.

#include <iostream> int main() { std::cout<<"Unesi cijeli broj n: "; int n; std::cin>>n; if(n<5 || n>24) std::cout<<"Haj mrs kuci"; for(int i(0);i<n;i++) { for(int j(0);j<2*n;j++) { if(((i==0 || i==n-1) && (j==0 || j==2*n-1)) || (i==2 || i==n-3) && (j==2 || j==2*n-3)) std::cout<<"+"; else if(((i==0 || i==n-1) && j>0 && j<2*n-1) || ((i==2 || i==n-3) && j>2 && j<2*n-3)) std::cout<<"-"; else if(((j==0 || j==2*n-1) && i>0 && i<n-1) || ((j==2 || j==2*n-3) && i>2 && i<n-3)) std::cout<<"|"; else std::cout<<" "; } std::cout<<std::endl; } return 0; }

#Zadatak 18.

#include <iostream> int main() { double x, N; std::cout << "Unesi realan broj x i stepen polinoma N: "; std::cin >> x >> N; double P(0); while(N>=0){ double a; std::cout << "Unesite koeficijent polinoma a(" << N << "): "; std::cin >> a; P+=a; if(N-- > 0) P*=x; } std::cout << "P(" << x << ") = " << P << std::endl; return 0; }

Page 21: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

16

#Zadatak 19.

#include <iostream> #include <cmath> int main() { int svi(0); double n, zbir(0), umnozak(1); std::cout << "Unesite realan broj: "; while((std::cin >> n), n!=0){ std::cout << "Unesite realan broj: "; svi++; zbir+=n; umnozak*=n; } std::cout << "Aritmeticka sredina je: " << zbir/svi << std::endl; std::cout << "Geometrijska sredina je: " << std::pow(umnozak, 1./svi) << std::endl; return 0; }

#Zadatak 20. ver.1.

#include <iostream> int main() { int a, b; std::cout << "Unesite dva cijela broja: "; std::cin >> a >> b; for(int i=a; i<=b; i++){ int br(0); int t=i; while(--t!=0) if(i%t==0) br+=t; if(br==i) std::cout << br << " "; } return 0; }

Page 22: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

17

#Zadatak 20. ver.2.

#include <iostream> using namespace std; int main() { int n; cout <<"Unesite broj n: "; do { cin >> n; } while(n < 5 || n > 24); for(int i = 0; i < n; i++) { if(i==0 || i==n-1) { cout<<"+"; for(int j=0; j<2*n; j++) { cout<<"-"; } cout<<"+"; cout<<endl; } else if(i ==1 || i==n-2) { cout<<"|"; for(int j=0; j<2*n; j++) { cout<<" "; } cout<<"|"; cout<<endl; } else if(i==2 || i ==n-3) { cout<<"| +"; for(int j=0; j<(2*(n-2))-2; j++) { cout<<"-"; } cout<<"+ |"; cout<<endl; } else { cout<<"| |"; for(int j=0; j<(2*(n-2))-2; j++) { cout<<" "; } cout<<"| |"; cout<<endl; } } return 0; }

Page 23: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

18

#Zadatak 21.

#include <iostream> int main() { int n; std::cout << "Unesi broj n: "; std::cin >> n; int t=n, br(0); while(t>0){ br*=10; br += t%10; t/=10; } (br==n)? std::cout << "Uneseni broj je palindrom." : std::cout << "Uneseni broj nije palindrom."; return 0; }

#Zadatak 22.

#include <iostream> 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'); } double raz(0), t(0); while(n-->0){ double a; std::cout << "Unesi realan broj a(" << (n+1) << "): "; std::cin >> a; t+=a; raz+=1/t; } std::cout << "Rezultat je: " << raz << std::endl; return 0; }

Page 24: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

19

#Zadatak 23.

#include <iostream> int main() { unsigned int n; std::cout << "Unesi n: "; std::cin >> n; if(n<=0){ std::cout << "Niste unijeli prirodan broj!"; return 0; } double Y, a(0); if (n==1) Y=1; else for(int i=n-1; i>=0; i--) for(unsigned int j=n; j>1; j--){ if(a==0) a = i + 1./j; Y = --i + 1./a; a=Y; } std::cout << Y; return 0; }

#Zadatak 24.

#include <iostream> int main() { int a, b; do{ std::cout << "Unesite dva prirodna broja: "; std::cin >> a >> b; }while(a<=0 || b<=0); int broj(0); for(int i=a;i<=b;i++){ int S(0); int t=i; while(t!=0){ int cifra = t%10; S+=cifra; t/=10; } if(i%S==0) broj++; } std::cout << "Rezultat: " <<broj ; return 0; }

Page 25: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

20

#Zadatak 25.

#include <iostream> int main() { int n,m; std::cout << "Unesite dva prirodna broja: "; while((std::cin >> n >> m), (n<=0 || m<=0)){ std::cout << "Unesite dva prirodna broja: "; std::cin.clear(); std::cin.ignore(10000, '\n'); } for(int i=n; i<=m; i++){ int br(0); for(int j=2; j<i; j++) if(i%j==0) br++; if(br==0 && i!=1) std::cout << i << " "; } return 0; }

Page 26: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

21

#Zadatak 26.

#include <iostream> #include <iomanip> int main() { int n1, n2; std::cout << "Unesite dva prirodna broja: "; while((std::cin >> n1 >> n2), (n1<=0 || n2<=0)){ std::cout << "Unesite dva prirodna broja: "; std::cin.clear(); std::cin.ignore(10000, '\n'); } std::cout << "+" << std::setw(10) << std::setfill('-') << "+" << std::setw(10) << "+" << std::endl; std::cout << "| Brojevi |" << std::setfill(' ') << std::setw(10) << "Sume br |" << std::endl; std::cout << "+" << std::setw(10) << std::setfill('-') << "+" << std::setw(10) << "+" << std::endl; for(unsigned int i=n1; i<=n2; i++){ int suma(0); int t=i; while(t>0){ if(i%t==0) suma+=t; t--; } std::cout << "|" << std::setw(8) << std::setfill(' ') << std::right << i << " |" << std::setw(8) << std::right << suma << " |" << std::endl; } std::cout << "+" << std::setw(10) << std::setfill('-') << "+" << std::setw(10) << "+"; return 0; }

Page 27: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

22

#Zadatak 27.

#include <iostream> int main() { int n; std::cout << "Unesi prirodan broj n: "; while(std::cin >> n , n<=0){ std::cout << "Unesi prirodan broj n: "; std::cin.clear(); std::cin.ignore(10000, '\n'); } int prost; int k(0); for(int i=2; i<12345123; i++){ int br(0); for(int j=2;j<i;j++) if(i%j==0 && i!=2) br++; if(br==0){ prost=i; k++; } if(k==n) break; } std::cout << prost; return 0; }

#Zadatak 28.

#include <iostream> #include <cmath> double stepen (int x, int n){ int a(1); for(int i=1; i<=std::fabs(n); i++) a*=x; if (n>0) return a; return 1./a; } int main() { int x, n; std::cout << "Unesi x: "; std::cin >> x; std::cout << "Unesi stepen n: "; std::cin >> n; std::cout << stepen(x, n) << std::endl; return 0; }

Page 28: Zadaci za samostalno vježbanje 1. · Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Zadaci za samostalno vježbanje 1 Kolekcija neobaveznih zadataka za ponavljanje

23

#Zadatak 29. ver.1.

#include <iostream> #include <cmath> double korijen(double x){ double xn(1), x0(1), a; while(xn!=a){ a=xn; xn=(x0+x/x0)/2; x0=xn; } return xn; } int main() { double x; std::cout << "Unesi x: "; std::cin >> x; std::cout << korijen(x) << std::endl; return 0; }

#Zadatak 29. ver.2.

#include <iostream> #include <math.h> using namespace std; double korjen(int broj); int main() { int unos; double broj; cout <<"Unesite broj iz kojeg zelite korjen izvaditi: "; cin>> unos; broj = korjen(unos); cout<<broj<<" "<<sqrt(unos)<<endl; return 0; } double korjen(int broj) { double korjeni = 1.0, prvi_clan; for (int i = 0;i <=broj;i++) { prvi_clan = korjeni; korjeni=(prvi_clan + double(broj)/prvi_clan)/2.; } return korjeni; }