You are on page 1of 20

Zadaci C++

28-04-2015

1. Treba unijeti tri realna broja pa pronai i ispisati najmanji.


Zadatak rijesiti uvodjenjem pomocne varijable min.

#include<iostream>
using namespace std;
int main()
{
float a,b,c,min;
cout<<"Upisi prvi broj:";
cin>>a;
cout<<"Upisi drugi broj:";
cin>>b;
cout<<"Upisi treci broj:";
cin>>c;

min=a;
if (b<min)
{min=b;}
if (c<min)
{min=c;}
cout<<"Ako se upisu brojevi: "<<a<<", "<<b<<"
i "<<c
<<" najmanji od njih je "<<min<<endl;
return 0;
}

2. Treba izraunati jacinu struje, napon ili otpor prema


odabiru korisnika. Za raunanje jacine struje treba birati 1, za
napon 2, a za otpor 3. Ovisno o tome to se eli raunati
treba unijeti odgovarajue podatke.

Napomene:

Koristi se naredba grananja switch case.


Kreirati tri grane (jakost struje (1), napon (2) i
otpor (3)).
Ovisno o tome ta korisnik upie (broj 1, 2 ili
3) izvrit e se jedna od grana.
U sluaju da korisnik unese vrijednost koja
nije 1, 2 ili 3, ispisat e se upozorenje.

#include <iostream>
using namespace std;
int main ()
{
cout<<"Ohmov zakon"<<endl;
cout<<"Za racunanje jakosti struje upisi 1,\
za racunanje napona upisi 2, a za otpor 3: ";
int i;
float U,I,R;
cin>>i;
switch (i)
{
case 1:
cout<<"U (V)=";
cin>>U;
cout<<"R (om)=";
cin>>R;
I=U/R;
cout<<"Ako je napon "<<U<<" V, a otpor "<<R
<<" oma, jakost struje iznosi "<<I<<"
A."<<endl;
break;

case 2:
cout<<"I (A)=";
cin>>I;
cout<<"R (om)=";
cin>>R;
U=I*R;
cout<<"Ako je jakost struje "<<I<<" A, a otpor "<<R
<<" oma, napon iznosi "<<U<<" V."<<endl;
break;
case 3:
cout<<"U (V)=";
cin>>U;
cout<<"I (A)=";
cin>>I;
R=U/I;
cout<<"Ako je napon "<<U<<" V, a jakost struje iznosi "
<<I<<" A, otpor iznosi "<<R<<" oma."<<endl;
break;
default:
cout<<"Pogresan unos. Treba upisati 1, 2 ili 3."<<endl;
}
return 0;
}

3. Program na osnovu unesenog rednog broja mjeseca


ispisuje koliko taj mjesec ima dana. U sluaju unosa broja koji
nije iz raspona od 1 do 12 treba ispisati upozorenje.

Napomena:

Zadatak rijeiti pomocu switch case naredbe koja


omoguava viestruko grananje.

Uneseni broj je uslov koji se provjerava naredbom


switch.

Potrebno je nainiti tri grane (31, 30 i 28 dana).

U sluaju unosa broja koji nije iz raspona od 1 do 12


izvrit e se blok naredbi iza naredbe default.

#include<iostream>
using namespace std;
int main()
{
int i;
cout<<" Program na osnovu unesenog rednog broja
mjeseca \
ispisuje koliko taj mjesec ima dana"<<endl;
cout<<"Upisi redni broj mjeseca: ";
cin>>i;
switch (i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
cout<<i<<". mjesec ima 31
dan."<<endl;
break;

case 2:
cout<<i<<". mjesec ima 28 dana (ili 29 ako je \ godina
prestupna)."<<endl;
break;
case 4:
case 6:
case 9:
case 11:
cout<<i<<". mjesec ima 30 dana."<<endl;
break;
default:
cout<<"Pogresan unos. Redni broj mjeseca moze biti\
iz raspona od 1 do 12."<<endl;
}
return 0;
}

4. Program na temelju unesenih vrijednosti stranica


trokuta rauna obim ili povrinu, ovisno o elji
korisnika. Za izraun obima upisuje se 1, a za povrinu
2.

Prvo je potrebno provjeriti vrijednosti unesenih stranica


trokuta. One ne smiju biti <= 0.
Potrebno je provjeriti i da li je rije o stranicama trokuta,
tj. da li su zadovoljeni uslovi:
a+b>c
b+c>a
a+c>b
Ovisno o korisnikovu odabiru (1 ili 2) raunat e se obim ili
povrina.
Povrina se rauna po Heronovoj formuli:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
cout<<"Program na osnovu unesenih vrijednosti stranica
trokuta\
racuna opseg ili povrsinu, ovisno o zelji korisnika"<<endl;
float a,b,c,o,p,p1,pov;
int i;
cout<<"Za izracun opsega upisi 1, a za izracun povrsine 2: ";
cin>>i;
cout<<"a = ";
cin>>a;
cout<<"b = ";
cin>>b;
cout<<"c = ";
cin>>c;
if((a<=0)||(b<=0)||(c<=0))
{
cout<<"Vrijednost stranice trokuta ne moze biti <=0"<<endl;
goto kraj;
}

if((a+b<=c)||(b+c<=a)||(c+a<=b))
{
cout<<"Unesene vrijednosti nisu stranice trokuta"<<endl;
goto kraj;
}
switch(i)
{
case 1:
o=a+b+c;
cout<<"Opseg trokuta je O= "<<o<<endl;
break;
case 2:
cout<<"Povrsina se racuna po Heronovoj formuli"<<endl;
p=(a+b+c)/2;
p1=p*((p-a)*(p-b)*(p-c));
pov=sqrt(p1);
cout<<"Povrsina trokuta je P= "<<pov<<endl;
break;
default:
cout<<"Pogresan unos. Valja unijeti 1 ili 2!"<<endl;
}
kraj:return 0;
}

5. Treba unijeti tri realna broja pa ih ispisati od


najmanjeg do najveeg.

Napomene:

Problem se moe rijeiti tako da se prvo


pronau najvei i najmanji broj.
Nakon toga je potrebno pronai srednji broj.
Kod traenja srednjeg broja polazi se od
pretpostavke da srednji broj mora biti razliit i
od najmanjeg i od najveeg broja.
Koristit e se logiki operator I (&&) i operator
usporeivanja razliito (!=).
if ((b!= max)&&(b!= min))
mid=b;

#include<iostream>
using namespace std;
int main()
{
float a,b,c,min,mid,max;
cout<<"Upisi prvi broj:";
cin>>a;
cout<<"Upisi drugi broj:";
cin>>b;
cout<<"Upisi treci broj:";
cin>>c;
min=a;
if (b<min)
{min=b;}
if (c<min)
{min=c;}
max=a;

if (b>max)

{max=b;}
if (c>max)
{max=c;}
mid=a;
if ((b!=max)&&(b!=min))
{mid=b;}
if ((c!=max)&&(c!=min))
{mid=c;}
cout<<"Brojevi: "<<a<<", "<<b<<" i "<<c
<<" poredani od najmanjeg ka
najvecem:"<<endl;
cout<<min<<", "<<mid<<", "<<max<<endl;
return 0;
}

6. Rastaviti broj na proste faktore): Treba unijeti prirodni broj


pa ga rastaviti na proste faktore.

Broj se rastavlja na proste


faktore tako da ga se dijeli
najmanjim prostim brojem,
sve dok je djeljiv.
Zatim se dijeljenje
nastavlja sljedeim
prostim brojem i tako
redom sve dok se ne
dobije 1.

468

234

117

39

13

13

1.
2.
3.

4.

5.

6.

Napomene:
Po unosu broja valja provjeriti je li br > 0.
Ako nije, unos se ponavlja.
Ako je br > 0, valja zadati poetnu vrijednost varijable u
koju se pohranjuju prosti brojevi (prbr). Zbog lakeg ispisa
odabrano je prbr = 2.

Ako je vrijednost varijable br == 1, program zavriti.


Provjeriti je li br djeljiv s vrijednou varijable prbr.
Ako nije djeljiv s vrijednou varijable prbr, prbr valja
poveati za 1 i ponoviti taku 2.
Ako je broj br djeljiv s prbr, treba ispisati vrijednost
varijable prbr.
Treba podijeliti vrijednost varijable br s prbr i rezultat
pohraniti u varijablu br.
Ponoviti taku 1.

prbr =2

468%2==0
234%2==0
117%2 !=0
117%3==0
39%3==0
13%3 !=0
13%4 !=0
13%5 !=0

13%13==0

br=468/2=234
(234==1)?
br=234/2=117
(117==1)?
prbr=prbr+1=2+1=3
br=117/3=39
(39==1)?
br=39/3=13
(13==1)?
prbr=prbr+1=3+1=4
prbr=5
prbr=6
.....
prbr=13
br=13/13=1
(1==1)?

NE
NE
NE
NE

DA

#include <iostream>
using namespace std;
int main()
{
int br, prbr;
cout<<"Rastavljanje broja na proste faktore"<<endl;
unos:cout<<"Upisi broj veci od 0:";
cin>>br;
if(br<=0)
{
cout<<"Treba unijeti broj veci od 0"<<endl;
goto unos;
}
else
{
prbr=2;
cout<<br<<" = 1";
dj2:if(br==1)
{
goto kraj;
}

else
{
dj1:if(br%prbr==0)
{
cout<<" * "<<prbr;
br=br/prbr;
goto dj2;
}

else
{

prbr=prbr+1;
goto dj1;

}
}
kraj:cout<<endl;
return 0;
}

You might also like