You are on page 1of 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

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 x2 + 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).

1
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

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 = 23 ∙ 3 ∙ 72 ∙ 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
n
(  1) k
S= 
k 1
x  (x  k)

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


n
xk
S=  k!
k 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.

2
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

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:
**********
* *
* *
* *
* *
* *
**********

3
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

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 xN–1 + aN–2 xN–2 + ... + a2 x2 + 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
1 1 1 1
   ... 
a1 a1  a 2 a1  a 2  a3 a1  a 2  a3  ...  a n

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)

1
Y=
1
1
1
2
1
3
1
... 
n
Na primjer, za n = 3 treba da se dobije rezultat 0.7, jer je

1 1 7
Y| n=3 = = = = 0.7
1 3 10
1 1
1 7
2
3

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.

4
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

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 (42). 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).

5
#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;
}

1
#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;
}

2
#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;
}

3
#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; }

4
#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;
}

5
#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;
}

6
#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;
}

7
#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;
}

8
#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;
}

9
#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;
}

10
#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;
}

11
#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;
}

12
#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;
}

13
#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;
}

14
#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;
}

15
#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;
}

16
#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;
}

17
#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;
}

18
#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;
}

19
#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;
}

20
#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;
}

21
#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;
}

22
#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;
}

23

You might also like