You are on page 1of 72

1. If naredba. Dvostruko grananje.

Viestruko
grananje

1. Napisati program za pronalaenje modula broja koji je uneo korisnik.


#include<iostream.h>
int main()
{
float a;
cout<<"Unesite broj a:";
cin>>a;
if(a<0)
a=-1*a;
cout<<a;
system("pause");
return 0;
}

2. Napisati program za raunanje kvadratnog korena nekog broja.


Pri sastavljanju ovog programa treba povesti rauna o znaku vrednosti iji se
koren trai. U sluaju da korisnik unese negativan broj reenje je iracionalno,
odnosno kvadratni koren negativnog broja je neka imaginarna vrednost. U C++
programskom jeziku postoji include direktiva koja omoguava izvoenje
odreenih matematikih operacija, izmeu ostalog i raunanje kvadratnog
korena. Meutim nije omogueno raunanje korena negativnog broja. Stoga
zaobilaznim putem dolazimo do cilja tako to u sluaju da je korisnik uneo
negativnu vrednost obrnemo znak unete vrednosti a zatim izbacujemo na ekran
tekst koji sadri informaciju o tome da je reenje imaginaran broj.
#include<iostream.h>
#include<math.h>
pronalaenje korena

//include direktiva (biblioteka) koja omoguava

int main()
{
float a,b;
1

cin>>a;
if(a<0)
{
b=sqrt(-a);
// moe se u argumentu funkcije koja trai koren obrnuti znak
promenljive a
//a=-1*a;b=sqrt(a); //alternativni nain, moe se prvo obrnuti znak vrednosti a,
a zatim traiti //koren
}
else
{
b=sqrt(a);
}
cout<<b;
system("pause");
return 0;
}

3. Napisati program koji rauna 1/|a|.


Uzimanjem u obzir tri razliita sluaja za koja imamo razliita reenja dolazimo
do dvostrukog if else grananja.
#include<iostream.h>
int main()
{
float a,b;
cout<<"Unesite broj a:";
cin>>a;
if(a<0)
{
b=1/(-a);
cout<<"Vrednost f-je je:"<<b;
}
if(a==0)
{
cout<<"F-ja nije definisana!";
2

}
else
{
b=1/a;
cout<<"Vrednost f-je je:"<<b;
}

system("pause");
return 0;
}

4. Napisati program koji od tri broja koja unese korisnik nalazi najmanji i najvei.
Ovaj program sadri viestruko if else grananje.
#include<iostream.h>
int main()
{
float a,b,c;
float min,max; //definiu se promenjljive min i max, koje e uzimati vrednosti
manjeg, odnosno //veeg broja pri uporeivanju
cout<<"\nUnesite broj a:";
cin>>a;
cout<<"\nUnesite broj b:";
cin>>b;
cout<<"\nUnesite broj c:";
cin>>c;
if(a<b)
{
min=a;
max=b;
if(c>b)
max=c;
else
if(c<a)
min=c;
}

else
{
max=a;
min=b;
if(c<b)
min=c;
else
if(c>a)
max=c;
}
cout<<"\nMinimum je:"<<min;
cout<<"\nMaximum je:"<<max;
system("pause");
return 0;
}
Program se moe jo jednostavnije napisati ako se npr. promenljiva a proglasi
istovremeno i minimalnom i maksimalnom vrednou.
5. Napisati program za ureenje tri broja po veliini.
#include<iostream.h>
int main()
{
int a,b,c,pom;
cout<<"Uneti broj a:\n";
cin>>a;
cout<<"\nUneti broj b:\n";
cin>>b;
cout<<"\nUneti broj c:\n";
cin>>c;
if(b<a)
{
pom=a; //zamena mesta ne moe da se izvri u jednom koraku*; pom cuva
vrednost a
a=b;
//promenljivoj a se dodeljuje vrednost promenljive b
b=pom; //b uzima vrednost promenljive a, koja je sauvana u registru
promenljive pom
4

}
if(c<b)
{
pom=b;
b=c;
c=pom;
}
if(b<a)
{
pom=a;
a=b;
b=pom;
}
cout<<a<<b<<c;
system("pause");
return 0;
}
*Ako bi se zamena mesta pokuala ostvariti direknim putem, odnosno ako bi se
odmah prvoj promenljivoj dodelila vrednost druge promenljive, onda bi se ponitila
vrednost koju je prva promenljiva uvala u registru, a tu vrednost je potrebno
prebaciti u registar druge promenljive. Iz tog razloga se uvodi pomona promenljiva
(u ovom programu pod imenom pom) koja e uvati vrednost prve promenljive.

6.Napisati program koji ispituje da li je broj paran . (Iskoristiti operator % koji daje
ostatak pri deljenju dva broja) .
7.Napisati program koji trai apsolutnu vrednost razlike dva parna broja |m-n|. Ako
korisnik nije uneo parne brojeve ispisati poruku o greci na ekranu. (Iskoristiti
operator % i operator && koji se ita kao i).
8. Nai vrednost napona na krajevima redne veze za date vrednosti jaine struje I i
elektrine otpore R1 i R2. Za sluaj da su otpornici vezani paralelno za dati napon U
odrediti ukupnu jainu struje na krajevima paralelne veze i utroenu snagu na
potroau. Neka sve ulazne vrednosti unese korisnik.

2. While iteracija. Do while iteracija.


1. Upotrebom while petlje sastaviti program koji ispituje da li je broj prost.

Sa obzirom na to da je prost broj deljiv samo sa jedinicom i sa samim sobom,


broj koji unese korisnik n e se deliti sa brojevima od 2 do n kako bi se ispitalo da li
je uneti broj prost. Alternativno se moe iskoristiti for petlja.
#include<iostream.h>
int main()
{
int n,m,p;
bool prost=true;

//ovim iskazom se inicijalno uzima da je broj prost

cout<<"\nUnesite ceo pozitivan broj:";


cin>>n;
m=2;
while(m<n)
{
p=n%m;
if(p==0)
{
prost=false;

//ako nema ostatka pri deljenju broj nije prost

}
m+=1;
//ekvivalentan zapis bi bio m=m+1; u ovom redu se vrednost
m uveava za jedan
}
if(prost)

//if (prost==true)

cout<<"\nBroj:"<<n<<"je prost broj";


else
cout<<"\nBroj:"<<n<<"nije prost broj";
system("pause");
return 0;
}
2. Napisati program za raunanje faktorijela nekog broja.
Ovaj program je napisan upotrebom while petlje. Takoe se moe napisati i
korienjem for petlje.
#include <iostream.h>
6

int main()
{
int n,m;
int fakt=1;
cout<<"Ovo je program za izracunavanje faktorijela celobrojne vrednosti n\n";
cout<<"\nUnesite ceo pozitivan broj n:";
cin>>n;
if (!(n<0)) //znak ! predstavlja negaciju, ovaj iskaz doslovno govori:Ako n nije
negativan broj
{
m=n;
while(m>0)
{
fakt=fakt*m;
m-=1;
//ekvivalentan zapis bio bi m=m-1; promenljiva m se umanjuje
za 1.
}
cout<<"\nFaktorijel broja n je n!:"<<fakt;
}
else
cout<<"\nUneli ste negativan broj";
return 0;
}

3. Sastaviti program koji e raunati sumu: a(n)= 1*2+...+n*(n+1). Iskoristiti


rezultat a(n)=n*(n+1)*(n+2)/3 za proveru.
Dati program demonstrira upotrebu do while petlje. Moe da se rei i preko for
petlje.
#include <iostream.h>
int main()
{
int n,m,a;
cout<<"Ovo je program za za izraunavanje sume a(n)=1*2+...+n*(n+1)\n";
cout<<"\nUnesite ceo pozitivan broj n:";
cin>>n;

//Suma a mora da se inicijalizuje na nulu zato to prvi sabirak mora biti nula
(videti izraz za a u //narednom delu programa). Kako e se m uveavati za jedan
takoe mora da se inicijalizuje na //nulu. U suprotnom sluaju bi dolo do greke
nakon kompajliranja.
a=0;
m=0;
do
{
m+=1;
a+=m*(m+1);
}
while(m<n);
cout<<"Vrednost sume a("<<n<<")="<<a<<"\n";
cout<<"Provera: a("<<n<<")="<< n*(n+1)*(n+2)/3;
return 0;
}
4. Korienjem while petlje napisati program za aritmetiki red. Iskoristiti
rezultat Sn=n/2*(2*a1+(n-1)*d) za proveru.
5. Slino prethodnom zadatku, napisati program koji e da rauna geometrijski
red.

3. Upotreba nizova i for petlje


1.Napisati program za raunanje minimuma i maksimuma niza a(i).
#include <iostream.h>
int main()
{
int i,min,max;
int a[100],n;
cout<<"Ovo je program za izracunavanje minimuma i maksimuma niza a(i)";
cout<<"\nUnesite broj clanova niza n:";
cin>>n;
cout<<"\nUnesite clanove niza:\n";
for(i=0;i<n;i++)

//for petlja za unos elemenata niza


8

{
cout<<"a("<<i+1<<")=";
cin>>a[i];
}
min=a[0];
max=a[0];

//min uzima vrednost prvog lana niza


//max uzima vrednost prvog lana niza

for(i=1;i<n;i++)
{
if(a[i]<min)
min sadri u registru,
min=a[i];
min

//for petlja za uporeivanje lanova niza

if(a[i]>max)
max=a[i];
}

// ako je i-ti element manji od vrednosti koju promenljiva


//vrednost i-tog elementa dodelie se promenljivoj

//slino je i pri uporeivanju i-te vrednosti sa max

cout<<"\nMaksimalni clan niza:"<<max;


cout<<"\nMinimalni clan niza:"<<min;
return 0;
}

2. Napisati program za ureivanje niza u rastui.


#include<iostream.h>
int main()
{
int i,j,min,index,temp;
int a[100],n;
cout<<"Ovo je program za uredjenje niza u rastuci\n";
cout<<"\nUnesite broj clanova niza n:";
cin>>n;
cout<<"\nUnesite clanove niza:\n";
for(i=0;i<n;i++)
{
cout<<"a("<<i+1<<")=";
cin>>a[i];
9

}
for(j=0;j<n;j++)
{
min=a[j];
minimumom

//u ovom redu se j-ti lan niza proglasi

for(i=j;i<n;i++)
//zatim se u ovoj petlji ostali lanovi nakon jtog uporeuju meusobno
{
if(a[i]<min)
//ako je tekui lan manji od vrednosti
promenljive min
{
min=a[i];
//min uzima vrednost lana a(i)
index=i;
//a promenljiva index uzima vrednost i
datog lana
}
}
//lan koji je proglaen minimumom na kraju prethodne petlje se poredi sa j-tim
lanom.
if(min<a[j])
//ako je min manji od j-tog lana, ta dva
elementa e zameniti mesta
{
temp=a[j];
// temp uva vrednost a(j)
a[j]=a[index];
//zatim a(j) uzima vrednost proglaenog minimuma
a[index]=temp;
//sada je a(index) slobodan da uzme vrednost koju je
uvao temp
}
}
cout<<"Rastuci niz je:\n";
for(i=0;i<n;i++)
{
cout<<"a("<<i+1<<")="<<a[i]<<"\n";
}
system("pause");
return 0;
}

10

3. Napisati program za odredjivanje preseka dva niza.


#include <iostream.h>
int main()
{
int i,j;
int a[100],b[100],n,m;
cout<<"Ovo je program za odredjivanje preseka dva niza a(i) i b(i)";
cout<<"\nUnesite broj clanova prvog niza n:";
cin>>n;
cout<<"\nUnesite clanove prvog niza:\n";
for(i=0;i<n;i++)
{
cout<<"a("<<i+1<<")=";
cin>>a[i];
}
cout<<"\nUnesite broj clanova drugog niza m:";
cin>>m;
cout<<"\nUnesite clanove drugog niza:\n";
for(i=0;i<m;i++)
{
cout<<"b("<<i+1<<")=";
cin>>b[i];
}
cout<<"a presek b:\n";
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[i]==b[j])
cout<<a[i]<<"\n";
}
}
system("pause");
return 0;
}

11

4. Napisati program koji rauna ln(1+z),

za prvih n lanova

korienjem razvoja funkcije u Tejlorov red oko take z0=0.


5. Savrsen broj je broj koji je jednak zbiru svojih pravih delilaca. Do 2013. godine
je poznato 48 savrsenih brojeva, prvih pet su 6, 28, 496, 8128 i 33550336.
Napisati program koji e ispitivati da li je broj koji je uneo korisnik savren broj.
6. Vozilo se kree pravolinijski. Na sukcesivnim delovima puta, jednake duine s,
ima stalne brzine

, ,...,

. Napisati program koji odreuje kolika je srednja

brzina kretanja tela. Omoguiti korisniku unos vrednosti brzina, duine puta i
ukupan broj delova puta koje je vozilo prelo.
7. Upotrebom for petlje napisati program koji ispituje da li je broj prost.
8. Za vrednosti veliine x: 1,2,3,4,5,6,7,8,9 i 10 u eksperimentalnom merenju
dobijene su vrednosti y: 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9 i 1. Odrediti vrednosti
veliine y za vrednosti x: 1,2.5,3.6,4 i 5.

4. Upotreba funkcije

1. Prilikom eksperimentalnog merenja veliine x dobijeni su sledei rezultati :


15.21,15.27,15.29,15.26,15.25, merenje veliine y dalo je rezultate:
3.2,4.1,3.2,2.9,3.1,2, a veliine z: 3.4,3.7,3.9,3.2,3.3,4.1,4. Napisati program koji
e da izrauna srednje vrednosti tih veliina. Opciono napisati program koji e
nalaziti srednju vrednost veliine ije izmerene vrednosti unosi korisnik.

#include <iostream.h>
float srvr(float a[], int n);
int main()
{
float x[100]={15.21,15.27,15.29,15.26,15.25};
float y[100]={3.2,4.1,3.2,2.9,3.1,2};
float z[100]={3.4,3.7,3.9,3.2,3.3,4.1,4};
int n=5,m=6,k=7;
int i;

12

cout<<"srednja vrednost velicine x="<<srvr(x,n)<<endl;


//endl je isto to i
/n, tj. novi red cout<<"srednja vrednost velicine y="<<srvr(y,m)<<endl;
cout<<"srednja vrednost velicine z="<<srvr(z,k)<<endl;
system("pause");
return 0;
}

float srvr(float a[], int n)


{
float zbir = 0;
for (int i = 0; i < n; i++)
{
zbir += a[i];
}
return zbir/n;
}
Napomena: Poziv funkcije sadri samo imena svojih parametara, stoga se javlja
samo ime niza bez dimenzije, isto bi bilo i za matrice.
2. Napisati program za reavanje sistema jednaina 2x2 upotrebom Kramerovog
pravila.
#include<iostream.h>
float determinanta(float a,float b,float c,float d);
int main()
{
float a,b,c,d,e,f,dx,dy,det,x,y;
cout<<"\n
cout<<"\n
cout<<"\n
cout<<"\n
cout<<"\n
cout<<"\n

a=";cin>>a;
b=";cin>>b;
c=";cin>>c;
d=";cin>>d;
e=";cin>>e;
f=";cin>>f;

det=determinanta(a,b,c,d);
dx=determinanta(e,b,f,d);
dy=determinanta(a,e,c,f);

13

if(det==0)
cout<<"\n Sitem nema jedinstveno resenje";
else
{
x=dx/det;
y=dy/det;
cout<<"\n x="<<x;
cout<<"\n y"<<y;
}
return 0;
}
float determinanta(float a,float b,float c,float d)
{
return (a*d-b*c);
}

3. Napraviti kalkulator sa jednostavnim operacijama (sabiranje,


oduzimanje,mnoenje i deljenje).

#include<iostream.h>
float
float
float
float

sabiranje(float x,float y);


oduzimanje(float x,float y);
mnozenje(float x,float y);
deljenje(float x,float y);

int main()
{
float a,b;
int operacija;
cout<<"\nMeni:";
cout<<"\noperacija
cout<<"\noperacija
cout<<"\noperacija
cout<<"\noperacija
cout<<"\nizlaz:5";

1:sabiranje";
2:oduzimanje";
3:mnozenje";
4:deljenje";

14

do
{
cout<<"\nUnesite prvi broj:";
cin>>a;
cout<<"\nUnesite drugi broj:";
cin>>b;
cout<<"\nIzaberite operaciju";
cin>>operacija;

//u narednom bloku se u skladu sa izabranom opcijom daje izlaz pozivanjem


odgovarajue funkcije
switch(operacija)
{
case 1:cout<<"rezultat:"<<sabiranje(a,b);break;
omoguava izlaz iz petlje
case 2:cout<<"rezultat:"<<oduzimanje(a,b);break;
case 3:cout<<"rezultat:"<<mnozenje(a,b);break;
case 4:cout<<"rezultat:"<<deljenje(a,b);break;
default:cout<<"Nepostojeci izbor";break;
}

//break

}
while (operacija!=5);
system("pause");
return 0;
}
float sabiranje(float x,float y)
{
return (x+y);
}
float oduzimanje(float x,float y)
{
return (x-y);
}
float mnozenje(float x,float y)
{
return (x*y);
15

}
float deljenje(float x,float y)
{
if (y==0)
cout<<"Nedozvoljena operacija";

return (x/y);
}
Malo elegantniji nain bio bi da se umesto numerikog izbora operacije deklarie
promenljiva pod imenom operacija, tipa char, koja e uzimati oznake '+','-','*' i
'/'.

4. Korienjem funkcije napisati program koji rauna sumu geometrijskog niza


(geometrijski red).
#include <iostream.h>
float stepen(float x, int n);
int main()
{
float a,q;
int n;
int i;
float s=0;
cout<<"Ovo je program za izracunavanje sume geometrijskog niza";
cout<<"\nUnesite prvi clan niza a1:";
cin>>a;
cout<<"Unesite kolicnik niza q:";
cin>>q;
cout<<"Unesite broj clanova niza:";
cin>>n;
for(i=0;i<=n-1;i++)
{
s+=a*stepen(q,i);
//poziva se funkcija stepen sa argumentima
definisanim u glavnoj funkciji
}
16

cout<<"Vrednost sume je:"<<s;


return 0;
}
float stepen(float x, int n)
{
int i;
float b=1;
for(i=1;i<=n;i++)
//n puta izvrie sledeu operaciju mnoenja
{
b*=x;
//ekvivalentan zapis bio bi b=b*x; u prvom koraku b=1*x, zatim je
b=x*x, zatim b=x*x*x itd.
}
return b;
}

5. Napisati program koji rauna binomni koeficijent (n k) = n!/(k!(n-k)!).


#include<iostream.h>
float faktorijel(int n);
float binom(int n, int k);
int main()
{
int i;
int n;
cout<<"Ovo je program za izracunavanje binomnih koeficijenata (n k)";
cout<<"\nUnesite n:";
cin>>n;
for(i=0;i<=n;i++)
{
cout<<"\n";
cout<<"Vrednost binomnog koeficijenta ("<<n<<"
"<<i<<")je:"<<binom(n,i)<<endl;
}
system("pause");
return 0;
17

float binom(int n, int k)


{
float b;
b=faktorijel(n)/(faktorijel(k)*faktorijel(n-k));
return b;
}
float faktorijel(int n)
{
int i;
float f=1;
for(i=1;i<=n;i++)
{
f*=i;
}
return f;
}
6. Sastaviti program za reavanje sistema jednaina 3x3 upotrebom Kramerovog
pravila.
7. Napisati program koji e da rauna vrednost exp (x) upotrebom prvih N
lanova razvoja stepenog niza.
8. Napraviti naucni kalkulator koji pored osnovnih sadri i operacije
sin,cos,tan,atan,Exp,ln,log,n!,1/x i x^y. Upotrebiti biblioteku <math.h> koja
sadri funkcije sin,cos, tan koje u argumentu moraju da imaju stepene u
radijanima, i funkcije exp,atan,log10,log i pow (u C++ biblioteci, pow oznaava
stepenu funkciju: pow(a,b)=ab ). Funkcije exp i ln, kao i njihovi argumenti moraju
bit tipa double.

5. Matrice
1. Omoguiti korisniku unos elemenata kvadratne matrice, a zatim odrediti trag
matrice.
#include<iostream.h>
int main()
{
float a[50][50];
int i,j,n,S;
18

cout<<"\nUnesite broj redova kvadratne matrice n=";


cin>>n;
S=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<"\nUnesi element matrice a("<<i+1<<")("<<j+1<<")=";
cin>>a[i][j];
if(i==j)
{
S+=a[i][j];
}
}
}
cout<<"\nTrag matrice je:"<<S;
system("pause");
return 0;
}

2. Napisati program koji rauna proizvod matrice dimenzije n x m i vektora


duine n.
Ovaj program sadri funkciju pod imenom mnoenje tipa promenljive void.
Ova funkcija ne vraa vrednost , ve u njenom pozivu samo izvrava naredbe iz
svog bloka.
#include<iostream.h>
void mnozenje(int n, int m,float a[50][50], float b[50]);
int main()
{
float a[50][50];
float b[50],c[50];
int i,j,n,m;
19

cout<<"\nUnesi broj redova matrice a(i)(j)\n";


cin>>n;
cout<<"\nUnesi broj kolona matrice a(i)(j)\n";
cin>>m;
cout<<"\nUnesi elemente matrice a(i)(j)\n";
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cout<<"a["<<i+1<<"]["<<j+1<<"]=";
cin>>a[i][j];
}
}
cout<<"\nUnesi elemente niza b(j)\n";
for(j=0;j<m;j++)
{
cout<<"b["<<j+1<<"]=";
cin>>b[j];
}
mnozenje(n,m,a,b);
system("pause");
return 0;
}
void mnozenje(int n, int m,float a[50][50], float b[50])
{
float c[50];
int i,j;

for(i=0;i<n;i++)
{
c[i]=0;
for(j=0;j<m;j++)
{
c[i]+=a[i][j]*b[j];
20

}
}
cout<<"proizvod matrice a(i)(j) i vektora b(i) je vektor c(i), ciji su elementi:\n";
for(i=0;i<n;i++)
{
cout<<"c["<<i+1<<"]="<<c[i]<<"\n";
}
}
3.program sa menijem, swich case
//Programiranje I
//Vezbe: Program broj 13
//Program sa menijem koji izracunava:
// 1) Mnozenje matrice skalarom
// 2) Zbir dve matrice
// 3) Proizvod dve matrice
#include <iostream.h>
void skalar();
void sabiranje();
void mnozenje();
int main()
{
int index;
do
{
cout<<"\nMeni:";
cout<<"\n1 - Mnozenje matrice skalarom:";
cout<<"\n2 - Sabiranje matrica:";
cout<<"\n3 - Mnozenje matrica:";
cout<<"\n4 - izlaz";
cout<<"\nUnesite zeljeni izbor:";
cin>>index;
switch(index)
{
case 1:skalar();break;
case 2:sabiranje();break;
21

case 3:mnozenje();break;
case 4:cout<<"kraj programa";break;
default:cout<<"Nedefinisan izbor!";
}
}
while(index!=4);
system("pause");
return 0;
}
void skalar()
{
int i,j,n,m;
float a[20][20];
float scalar;
cout<<"\nMnozenje matrice skalarom:";
// Unos matrice
cout<<"\nUnesite broj redova matrice n=";cin >> n;
cout<<"\nUnesite broj kolona matrice m=";cin >> m;
for(i=0;i<=n-1;++i)
{
for(j=0;j<=m-1;++j)
{
cout<<"\nUnesi element matrice a(";cout<<i+1;cout<<")
(";cout<<j+1;cout<<")=";cin >> a[i][j];
}
}
//unos skalara
cout<<"\nUnesi skalar=";
cin >> scalar;
//mnozenje
for(i=0;i<=n-1;++i)
{
for(j=0;j<=m-1;++j)
{
a[i][j]=a[i][j]*scalar;
22

}
}
// Stampanje matrice
for(i=0;i<=n-1;++i)
{
for(j=0;j<=m-1;++j)
{
cout<<"\nElement matrice a(";cout<<i+1;cout<<")
(";cout<<j+1;cout<<")=";
cout<<a[i][j];
}
}
}
void sabiranje()
{
int i,j;
int n,m;
float a[20][20];
float b[20][20];
float c[20][20];
cout<<"\nSabiranje matrica:";
// Unos matrica
cout<<"\nUnesite broj redova matrica n=";cin >> n;
cout<<"\nUnesite broj kolona matrica m=";cin >> m;
for(i=0;i<=n-1;++i)
{
for(j=0;j<=m-1;++j)
{
cout<<"\nUnesi element matrice a(";cout<<i+1;cout<<")
(";cout<<j+1;cout<<")=";cin >> a[i][j];
}
}

for(i=0;i<=n-1;++i)
{
for(j=0;j<=m-1;++j)
{

23

cout<<"\nUnesi element matrice b(";cout<<i+1;cout<<")


(";cout<<j+1;cout<<")=";cin >> b[i][j];
}
}
//Inicijalizacija
for(i=0;i<=n-1;++i)
{
for(j=0;j<=m-1;++j)
{
c[i][j]=0.;
}
}
//Sabiranje
for(i=0;i<=n-1;++i)
{
for(j=0;j<=m-1;++j)
{
c[i][j]=a[i][j]+b[i][j];
}
}
// Stampanje matrice
for(i=0;i<=n-1;++i)
{
for(j=0;j<=m-1;++j)
{
cout<<"\nElement matrice c(";cout<<i+1;cout<<")
(";cout<<j+1;cout<<")=";cout<<c[i][j];
}
}
}
void mnozenje()
{
int i,j,k;
int n,m,p,q;
float a[20][20];
float b[20][20];
float c[20][20];
24

cout<<"\nMnozenje matrica:";
// Unos matrica
cout<<"\nUnesite broj redova prve matrice n=";cin >> n;
cout<<"\nUnesite broj kolona prve matrice m=";cin >> m;
cout<<"\nUnesite broj redova druge matrice p=";cin >> p;
cout<<"\nUnesite broj kolona druge matrice q=";cin >> q;
if(m==p)
{
for(i=0;i<=n-1;++i)
{
for(j=0;j<=m-1;++j)
{
cout<<"\nUnesi element matrice a(";cout<<i+1;cout<<")
(";cout<<j+1;cout<<")=";cin >> a[i][j];
}
}
for(i=0;i<=p-1;++i)
{
for(j=0;j<=q-1;++j)
{
cout<<"\nUnesi element matrice b(";cout<<i+1;cout<<")
(";cout<<j+1;cout<<")=";cin >> b[i][j];
}
}
//Inicijalizacija
for(i=0;i<=n-1;++i)
{
for(j=0;j<=q-1;++j)
{
c[i][j]=0.;
}
}
//Mnozenje
for(i=0;i<=n-1;++i)
{
for(j=0;j<=q-1;++j)
{
25

for(k=0;k<=m-1;++k)
{
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
}
// Stampanje matrice
for(i=0;i<=n-1;++i)
{
for(j=0;j<=q-1;++j)
{
cout<<"\nElement matrice c(";cout<<i+1;cout<<")
(";cout<<j+1;cout<<")=";cout<<c[i][j];
}
}
}

else
{
cout<<"\nMnozenje nije definisano !";
}
}
4.Napisati program koji izraunava transponovanu matricu.
#include <iostream.h>
void transponovana();
int main()
{
transponovana();
system("pause");
return 0;
}
void transponovana()
{
int n,m,i,j;
26

float a[10][10],b[10][10];
// Unos matrice
cout<<"\nUnesite broj redova matrice n=";cin >> n;
cout<<"\nUnesite broj kolona matrice m=";cin >> m;
for(i=0;i<=n-1;++i)
{
for(j=0;j<=m-1;++j)
{
cout<<"\nUnesi element matrice a(";cout<<i+1;cout<<")
(";cout<<j+1;cout<<")=";cin >> a[i][j];
}
}
for(i=0;i<=n-1;++i)
{
for(j=0;j<=m-1;++j)
{
b[j][i]=a[i][j];
}
}
// Stampanje matrice
for(i=0;i<=n-1;++i)
{
for(j=0;j<=m-1;++j)
{
cout<<"\nElement matrice a(";cout<<i+1;cout<<")
(";cout<<j+1;cout<<")=";cout<<a[i][j];
}
}
// Stampanje transponovane matrice
cout<<"\nTransponovana matrica je: a\n";
for(i=0;i<=m-1;++i)
{
for(j=0;j<=n-1;++j)
{

27

cout<<"\nElement matrice b(";cout<<i+1;cout<<")


(";cout<<j+1;cout<<")=";cout<<b[i][j];
}
}
}
5. Napisati program koji trai minimalni i maksimalni element matrice i koji pamti
poziciju tih elemenata.
6. Napisati program koji ureuje elemente vrsta matrice u rastui niz.
7. Napisati program koji ispituje da li je matrica simetrina (
antisimetrina (

),

) ili nijedno od ta dva.

8. Napisati program koji ispituje da li je matrica ortogonalna (

6. Rekurzija
1. Upotrebom rekurzivne funkcije napisati program koji rauna faktorijel nekog
broja.
#include<iostream.h>
int fakt( int n);
int main()
{
int n;
cout<<"n=";
cin>>n;
cout<<n<<"!="<<fakt(n);
system("pause");
return 0;
}
int fakt( int n)
{
if(n == 1)
return 1;
else
28

return (n * (fakt(n-1)));
}
2. Fibonaijev niz se sastoji od lanova kod kojih je svaki sledei broj zbir
prethodna dva. Napisati program koji e traiti vrednost lana Fibonaijevog niza
koji je izabrao korisnik.
#include<iostream.h>
int fib(int n);
int main()
{
int n;
cout<<"n=";
cin>>n;
cout<<"\n"<<n<<". clan fibonacijevog niza je:"<<fib(n);
system("pause");
return 0;
}
int fib(int n)
{
if(n<3)
return 1;
else
return(fib(n-2)+fib(n-1));
}
3. Upotrebom rekurzivne funkcije napisati program koji rauna

4. Paskalov trougao
(lepo stampa do 5 redova)
#include <iostream.h>
int paskal(int i, int j);

29

int main()
{
int n,k,i,j,x;
cout << "broj redova: ";
cin >> n;

for(i=0;i<=n;i++)
{
for(j=1;j<=n-i;j++)
cout<<" ";
for(k=0;k<=i;k++)
{
cout<<" ";cout << paskal(i,k) ;
}
cout << endl;
}
system ("pause");
return 0;
}

int paskal(int red, int kol)


{
if ((red==0) || (kol==0) || (red==kol))
return 1;
else
return (paskal(red-1,kol-1)+paskal(red-1,kol));
}

7. Globalne i lokalne promenljive


bezveze primer
1. Napisati program koji sadrzi opciju simulacije kretanja tela po ravnoj podlozi
pod dejstvom sile postavljene pod nekim uglom u odnosu na podlogu i opciju
simulacije sputanja tela niz strmu ravan. Rezultat koji e dati funkcija bie
ubrzanje, a vrednosti koeficijenta trenja, ugla, mase i sile koja vue telo
odreuje korisnik.
#include<iostream.h>
30

#include <math.h>
#define g 9.81
#define Pi 3.14
float k,alfa; //globalne promenljive
void opcija1();
void opcija2();
int main()
{
int n;
float a;
cout<<"Koeficijent trenja k=";
cin>>k;
cout<<"\nUgao alfa u stepenima=";
cin>>alfa;
alfa=alfa*(Pi/180);
do
{
cout<<"\nOpcije:\n";
cout<<"opcija1:kretanje tela po ravnoj podlozi\n";
cout<<"opcija2:spustanje tela niz strmu ravan\n";
cout<<"Izaberite opciju:";
cin>>n;
switch(n)
{
case 1:opcija1();break;
case 2:opcija2();break;
default:cout<<"Nedefinisan izbor!";break;
}
}
while(n<3);
system("pause");
return 0;
}
void opcija1()
31

{
float F,a,m;

//lokalne promenljive

cout<<"\nMasa u kilogramima m=";


cin>>m;
cout<<"Sila u N F=";
cin>>F;
a=(1/m)*(F*cos(alfa)-k*m*g+k*F*sin(alfa));
cout<<"a="<<a<< "m /s2";
}
void opcija2()
{
float a; //lokalna promenljiva
a=g*(sin(alfa)- k*cos(alfa));
cout<<"a="<<a<< "m /s2";
}

8. Pointeri. Reference(Pozivanje funkcije po vrednosti,


preko pointera i preko reference)
2. Napisati program za sortiranje brojeva od najmanjeg ka najveem upotrebom
pointera ili referenci.
Pozivanje funkcije po vrednosti zauzima mesta u memoriji zbog pravljenja
lokalnih kopija. Pozivanje funkcije po referenci preko pointera, ili referenci je
poeljno zbog utede memorije, kada je to potrebno.
Ukoliko program treba da sadri funkciju koja vraa vie od jednog parametra u
glavni program, u tom cilju mogu se upotrebiti pointeri ili reference. U naredna
dva primera su demonstrirana oba naina. Isto se moe ostvariti i upotrebom
globalnih promenljivih, to je ostavljeno za vebu.
Levo je primer uraen preko pointera, desno (kljuni delovi su u komentarima)
preko referenci.
1.
#include<iostream.h>
32

void sortiranje(int *a,int *b,int *c);

//void sortiranje(int &a,int &b,int &c);

int main()
{
int a,b,c,pom;
cout<<"a=";
cin>>a;
cout<<"\n";
cout<<"b=";
cin>>b;
cout<<"\n";
cout<<"c=";
cin>>c;
cout<<"\n";
sortiranje(&a,&b,&c);
//sortiranje(a,b,c);
cout<<a<<"\n"<<b<<"\n"<<c;
return 0;
}
void sortiranje(int *a,int *b,int *c)//void sortiranje(int &a,int &b,int &c)
{
int pom;
if (*b<*a)
{
pom=*a;
*a=*b;
*b=pom;
}

//if (b<a)
//pom=a;
//a=b;
// b=pom;

if (*c<*b)

//if (c<b)

{
pom=*b;
*b=*c;
*c=pom;
}

//pom=b;
//b=c;
//c=pom;

if (*b<*a)//if (b<a)
{
33

pom=*a;
*a=*b;
*b=pom;
}

//pom=a;
//a=b;
// b=pom;

2. Sastaviti program za pronalaenje minimalne i maksimalne vrednosti tri broja


upotrebom funkcije mimimax.

1. nain:
#include<iostream.h>
void mimimax(int a,int b,int c,int *min,int *max);
int main()
{
int a,b,c,min,max;
cout<<"\n a=";cin>>a;
cout<<"\n b=";cin>>b;
cout<<"\n c=";cin>>c;
mimimax(a,b,c,&min,&max);
cout<<"\n min ="<<min;
cout<<"\n max="<<max;
return 0;
}
void mimimax(int a,int b,int c,int *min,int *max)
{
*min=a;
*max=a;
if(a<b)
*max=b;
else
34

*min=b;
if(c<*min)
*min=c;
if(c>*max)
*max=c;
}

2. nain upotrebom globalnih promenljivih:


#include<iostream.h>
void mimimax(int *min,int *max);
int a,b,c;
int main()
{
int min,max;
cout<<"\n a=";cin>>a;
cout<<"\n b=";cin>>b;
cout<<"\n c=";cin>>c;
mimimax(&min,&max);
cout<<"\n min ="<<min;
cout<<"\n max="<<max;
return 0;
}
void mimimax(int *min,int *max)
{
*min=a;
*max=a;
if(a<b)
*max=b;
else
35

*min=b;
if(c<*min)
*min=c;
if(c>*max)
*max=c;
}
4. Sastaviti program koji reava sistem jednaina 2x2 upotrebom Kramerovog
pravila pozivom na funkciju determinanta, koja vraa vrednosti det,dx i dy.
#include<iostream.h>
float a,b,c,d,e,f;
void determinanta(float *dx,float *dy,float *det);
int main()
{
float dx,dy,det,x,y;
cout<<"\n
cout<<"\n
cout<<"\n
cout<<"\n
cout<<"\n
cout<<"\n

a=";cin>>a;
b=";cin>>b;
c=";cin>>c;
d=";cin>>d;
e=";cin>>e;
f=";cin>>f;

determinanta(&dx,&dy,&det);

if(det==0)
cout<<"\n Sitem nema jedinstveno resenje";
else
{
x=dx/det;
y=dy/det;
cout<<"\n x="<<x;
cout<<"\n y="<<y;
}

36

return 0;
}
void determinanta(float *dx,float *dy,float *det)
{
*det=a*d-b*c;
*dx=e*d-b*f;
*dy=a*f-e*c;
}

5. (neobavezan) Neka su tokom izvoenja eksperimentalne vebe odreivanja


ubrzanja Zemljine tee (g) pomou matematikog klatna izmereni duina konca
(l)i vreme trajanja 30 oscilacija za N merenja.
(Napomena: Duzina konca je konstantna, tako da je dovoljno krenuti od formule
T=2

, na osnovu koje sledi g=(4 2l)/T2.) Omoguiti korisniku unos tih

vrednosti i odrediti period oscilacija (T) i ubrzanje Zemljine tee za sva merenja,
kao i srednju brzinu (

), apsolutne greke g , relativne greke

standardnu devijaciju

#include<iostream.h>
#include <math.h>
#define Pi 3.14
float l,g[10],t[10],T[10],dg[10],bg[10],gsr,stand_dev;
int N,n,i;
void tabela(float *T_lok,float *g_lok, int j);
void greske(float &dg_lok,float &bg_lok,int j);
float g_sr();
float stand_devijacija();
int main()
{
float T_lok,g_lok,dg_lok,bg_lok;

37

gsr=0;
stand_dev=0;
cout<<"Duzina konca u [m]: l=";
cin>>l;
cout<<"\nukupan broj merenja N=";
cin>>N;
cout<<"\nBroj oscijacija n=";
cin>>n;
for(i=1;i<=N;i++)
{
cout<<"\n\nVreme oscilovanja u [s]: t["<<i<<"]=";
cin>>t[i];
tabela(&T_lok,&g_lok,i); //poziv funkcije po referenci preko pointera
T[i]=T_lok;
g[i]=g_lok;
cout<<"\nT["<<i<<"]="<<T[i]<<"[s]";
cout<<"\ng["<<i<<"]="<<g[i]<<"[m/s2]";
}
g_sr();
cout<<"\n\ngsr="<<gsr<<"[m/s2]\n";
for(i=1;i<=N;i++)
{
greske(dg_lok,bg_lok,i);
//poziv funkcije po referenci preko referenci
dg[i]=dg_lok;
bg[i]=bg_lok;
cout<<"\ndg["<<i<<"]="<<dg[i]<<"[m/s2]";
cout<<"\nbg["<<i<<"]="<<bg[i]<<"%";
}
stand_devijacija();
cout<<"\n\nstand.devijacija=(+/-)"<<stand_dev<<"[m/s2]\n";
system("pause");
return 0;
}
void tabela(float *T_lok,float *g_lok, int j)
{
cout<<"\n n="<<n<<"\t l="<<l;
38

*T_lok=t[j]/n;
*g_lok=l*(4*Pi*Pi)/((*T_lok)*(*T_lok));
}
float g_sr()
{
for(i=1;i<=N;i++)
{
gsr+=g[i];
}
gsr=gsr/N;
return gsr;
}
void greske(float &dg_lok,float &bg_lok,int j)
{

dg_lok=g[j]-gsr;
if(dg_lok<0)
bg_lok=((-dg_lok)/gsr)*100;
else
bg_lok=(dg_lok/gsr)*100;
}

float stand_devijacija()
{
for(i=1;i<=N;i++)
{
stand_dev+=dg[i]*dg[i];
}
stand_dev=sqrt((stand_dev)/(N-1));
return stand_dev;
}

39

6. Program koji demonstrira upotrebu pointera za rukovanje nizovima


#include <iostream.h>
int main()
{
int i, b[10]={1,2,3,4,5,6,7,8,9,10};
int *c=b;
for(i=0;i<10;i++)
{
cout<<*c<<" ";
c++;
}
return 0;
}

7. Napisati program koji racuna maksimalnu i prosecnu temperaturu u toku


meseca pozivom na funkcije maxtemp i prtemp.
#include <iostream.h>
float maxtemp(int n, float *p);
float prtemp(int n, float *p);
int main()
{
float temp[10],*p;
int i,n;
cout<<"\nUnesi broj temperatura:";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"t["<<i+1<<"]=";
cin>>temp[i];
cout<<"\n";
}
p=temp;

//postavljanje pokazivaca na prvi clan niza temp

40

cout<<"\nMaksimalna temperatura je:"<<maxtemp(n,p);


cout<<"\nProsecna temperatura je"<<prtemp(n,p);

return 0;
}
float maxtemp(int n, float *p)
{
float max=*p;
int i;
for(i=0;i<n;i++)
{
if(max<*p)
max=*p;
p++;
}
return max;
}
float prtemp(int n, float *p)
{
float pr=0;
int i;
for(i=0;i<n;i++)
{
pr=pr+*p;
p++;
}
return (pr/n);
}

8. Napisati program koji sadri funkciju koja vraa elemente niza u glavnu
funkciju.
#include <iostream.h>
int *funkcija(int a[20]);

41

int main()
{
int a[20],i;
funkcija(a); //poziva se funkcija koja vraa elemente niza

for(i=0;i<10;i++)
{
cout<<"a["<<i<<"]="<<a[i]<<"\n";
}
return 0;
}
//funkcija vraa pointer na prvi element niza, odnosno njegovu adresu, a
kompajler prevrti ostale //elemente
int *funkcija(int a[20])
{
int i;
for(i=0;i<10;i++)
{
a[i]=i;
}
return a;
}

12. Generator sluajnih brojeva


1. Program koji simulira bacanje kockice
#include <iostream.h>
int main()
{
int x;
int i;
srand(time(0));

42

for(i=1;i<=10;i++)
{
x=6.0*rand()/RAND_MAX+1;
[1,6]
cout<<"x="<<x<<"\n";
}

//

return 0;
}
2. 1 10.
. 1000 .
#include<iostream.h>
#include<time.h>
void van_opsega();
int main()
{
int x,y,poeni;
srand(time(0));
poeni=10000;
x=10.0*rand()/RAND_MAX+1;
[1,10]

//

cout<<"Unesite broj od 1 do 10:";


cin>>y;
van_opsega();
//
// [1,10],

while(y!=x)
{
cout<<"niste pogodili broj, pokusajte ponovo:";
poeni=poeni-1000;
cin>>y;
van_opsega();
}

43

if(y==x)
{
cout<<"Pogodili ste broj! Osvojili ste "<<poeni<<"poena";
}
return 0;
}
void van_opsega()
{
int y;
while(y<1 || y>10)
{
cout<<"\ngreska, birajte ponovo broj od 1 do 10\n";
cin>>y;
}
}
3. 1 10.
. 1000 .
#include<iostream.h>
#include<time.h>
void van_opsega();
int main()
{
int x,y,poeni;
srand(time(0));
poeni=10000;
x=10.0*rand()/RAND_MAX+1;
[1,10]

//

cout<<"Unesite broj od 1 do 10:";


cin>>y;
van_opsega();
//
// [1,10],

while(y!=x)
{
44

cout<<"niste pogodili broj, pokusajte ponovo:";


poeni=poeni-1000;
cin>>y;
van_opsega();
}

if(y==x)
{
cout<<"Pogodili ste broj! Osvojili ste "<<poeni<<"poena";
}
return 0;
}
void van_opsega()
{
int y;
while(y<1 || y>10)
{
cout<<"\ngreska, birajte ponovo broj od 1 do 10\n";
cin>>y;
}
}

4. Nesto kao Loto: 7 1 35.


1000 .
#include<iostream.h>
#include<time.h>
#include <conio.h>
#include <windows.h>
void vec_unesen();
void van_opsega();
void vec_izvucen();
int i,j,x[10], m[10],s=0;
int main()
{
srand(time(0));

45

cout<<"\nIzaberite 7 celih brojeva od 1 do 35. \n";


for(i=1;i<=7;i++)
{
cin>>x[i];
vec_unesen();
// ,
//
van_opsega(); // [1,35]
}

cout<<"\nIzvuceni brojevi su:\n";


for(i=1;i<=7;i++)
{
m[i]=34.0*rand()/RAND_MAX+1;
vec_izvucen();
//
Sleep(1000); // 1 ;
// #include<time.h> , #include <conio.h>
, #include <windows.h>
// n n1000,
.
// 5 , Sleep(5000);
cout<<m[i]<<endl;
for(j=1;j<=7;j++)
{
if(m[i]==x[j])
s++;
}
}
s=s*1000;
cout<<"\nOsvojili ste "<<s<<" poena";
return 0;
}

void vec_unesen()
{
for(j=1;j<=i-1;j++)
{
46

while(i>1 && x[i]==x[i-j])


{
cout<<"\ngreska, broj unesen, biraj ponovo\n";
cin>>x[i];
van_opsega();
}
}
}
void van_opsega()
{
while(x[i]<1 || x[i]>35)
{
cout<<"\ngreska, birajte ponovo\n";
cin>>x[i];
vec_unesen();
}
}
void vec_izvucen()
{
for(j=1;j<=i-1;j++)
{
while(i>1 && m[i]==m[i-j])
{
m[i]=34.0*rand()/RAND_MAX+1;
}
}
}

5. Napisati program koji rauna numeriki vrednost integrala

#include<iostream.h>
#include<math.h>
int main()
{
int i,j;
float s=0;
47

float x,y;
srand(time(0));
for(i=0;i<=10000;i++)
{
x=3.0*rand()/RAND_MAX;
y=pow(x,2);
s+=y*0.0003;
}
cout<<s<<endl;
return 0;
}

6. Neka igrica u stilu ruleta


#include<iostream.h>
#include<time.h>
#include <conio.h>
#include <windows.h>
int main()
{
int x,y,opcija,m,ulog,poeni=0;
srand(time(0));
cout<<"Igrate?";
cout<<"\nAko zelite da igrate izaberite 1 \n Ako ne zelite da igrate unesite bilo
koji broj\n";
cin>>opcija;

while(opcija==1)
{
cout<<"Izaberite polje od 1 do 10:";
cin>>y;
while(y<1 || y>10)
{
cout<<"\n molimo, unesite broj od 1 do 10:\n";cin>>y;
48

}
cout<<"ulog:";
cin>>ulog;

x=11.0*rand()/RAND_MAX;
//cout<<x<<endl;
cout<<"Spin1\n";
Sleep(2000);
cout<<"Spin2\n";
Sleep(2000);
cout<<"Spin3\n\n";
if(x-1>0) //cout<<x-1<<endl;
// cout<<x<<endl;
if(x+1<11) //cout<<x+1;
Sleep(2000);
cout<<"\n izvucen je:"<<x<<endl;

if(x==y)
{poeni+=ulog +10*ulog; cout<<"Cestitamo! Osvojili ste "<<poeni<<"
poena\n";}

if(x!=y && ulog!=0)


// {cout<<"Zao nam je, gubite sve poene";ulog=0; poeni=0;}
{
if((poeni!=0 && poeni<ulog))
{
cout<<"Nazalost, gubite sve poene";ulog=0; poeni=0;}

if(poeni!=0 && poeni>=ulog)


{
poeni=poeni-ulog; cout<<"Nazalost, ostaje Vam" << poeni <<
"poena";
}

if(poeni==0)
{
49

cout<<"Nista!";ulog=0; poeni=0;
}
}
cout<<"Igrate?";
cout<<"\nAko zelite da igrate izaberite 1 \n Ako ne zelite da igrate unesite bilo
koji broj\n";
cin>>opcija;
// m=opcija;
}
return 0;
}

REENJA:
1. oblast
5. #include<iostream.h>
int main()
{
50

int p;
cout<<"broj:";
cin>>p;
if(p%2==0)
{
cout<<"je paran broj";
}
else
cout<<"nije paran broj";

system("pause");
return 0;
}
6. #include<iostream.h>
int main()
{
int m,n,r;
cout<<"m=";
cin>>m;
cout<<"\n";
cout<<"n=";
cin>>n;
if(m%2==0 && n%2==0)
{
if(m>n)
{
r=m-n;
cout<<"|m-n|="<<r;
}
if(m<n)
{
r=n-m;
cout<<"|m-n|="<<r;
}
}
else
51

cout<<"uneli ste neparan broj";


system("pause");
return 0;
}
7. #include<iostream.h>
int main()
{
float R1,R2,I,U,P;
int opcija;
cout<<"opcija 1:redna veza";
cout<<"\n opcija 2:paralelna veza\n";
cout<<"\nIzaberite opciju:";
cin>>opcija;
cout<<"\nUnesite vrednost el. otpora:";
cout<<"\nR1=";
cin>>R1;
cout<<"\nR2=";
cin>>R2;

if(opcija==1)
{
cout<<"\nUnesi vrednost struje";
cout<<"\nI=";
cin>>I;
U=(R1+R2)/I;
cout<<"Vrednost U je:"<<U;
}
if(opcija==2)
{
cout<<"\nUnesi vrednost napona";
cin>>U;
I=(1/R1+1/R2)*U;
P=U*I;
cout<<"\nVrednost I je:"<<I;
cout<<"\nVrednost P je:"<<P;
}

52

system("pause");
return 0;
}

2.oblast
4. #include<iostream.h>
int main()
{
int a1,d,n,Sn,m;
cout<<"a1=";
cin>>a1;
cout<<"\nd=";
cin>>d;
cout<<"\nn=";
cin>>n;
Sn=0;
m=0;
while(m<n)
{
Sn+=a1+m*d;
m+=1;
}
cout<<"Sn="<<Sn;
cout<<"\nprovera: Sn="<<0.5*n*(2*a1+(n-1)*d);
system("pause");
return 0;
}

5. #include<iostream.h>
#include<math.h>
int main()
53

{
int n,i;
float a,q;
float S=0;
cout<<"a=";
cin>>a;
cout<<"\nq=";
cin>>q;
cout<<"\nn=";
cin>>n;
i=0;
while(i<n)
{
S+=a*pow(q,i);
i+=1;
}
cout<<"S="<<S;
system("pause");
return 0;
}

3.oblast
4.
#include<iostream.h>
#include<math.h>
int main()
{
int i,n;
float S,z;
cout<<"\nn=";cin>>n;
cout<<"\nz=";cin>>z;
S=0;

54

for(i=1;i<=n;i++)
{
S+=pow(-1,i-1)*(1./i)*pow(z,i);
}
cout<<"ln("<<z+1<<")="<<S<<endl;
system("pause");
return 0;
}
5.
#include<iostream.h>
int main()
{
int i,n,s;
cout<<"Unesite broj:";
cin>>n;
s=0;
for(i=1;i<n;i++)
{
if(n%i==0)
{
s+=i;
}
}
if(n==s)
{
cout<<"\n"<<n<<"je savrsen broj";
}
else
cout<<"\n"<<n<<"nije savrsen broj";
system("pause");
return 0;
}

6. Srednja brzina

= , odnosno

55

, gde je

=
Kako su putevi jednake duine njihov zbir =n*s pa je
=

, odakle sledi

#include <iostream.h>
int main()
{
float v[100];
int n,i;
int s;
float vs,zbir;
zbir =0;
cout<<"n=";
cin>>n;
cout<<"unos brzina na delovima puta:";
for(i=1;i<=n;i++)
{
cout<<"v["<<i<<"]=";
cin>>v[i];
cout<<"\n";
}
for(i=1;i<=n;i++)
{
zbir+=1/v[i];
}
vs=n/zbir;
cout<<"srednja brzina vs="<<vs;

56

system("pause");
return 0;
}
7. #include<iostream.h>
int main()
{
int n,m,p;
bool prost=true;
cout<<"\nUnesite ceo pozitivan broj:";
cin>>n;

for(m=2;m<n;m++)
{
p=n%m;
if(p==0)
{
prost=false;
}
}
if(prost)
cout<<"\nBroj:"<<n<<"je prost broj";
else
cout<<"\nBroj:"<<n<<"nije prost broj";

system("pause");
return 0;
}

57

8. Vrednosti y se mogu dobiti linearnom interpolacijom. Iz jednaine prave


y=kx+n sledi da je Y= X+y-kx, gde su X i Y oznake uvedene radi razlikovanja.

#include <iostream.h>
int main()
{
int x[10]={1,2,3,4,5,6,7,8,9,10};
float y[10]={0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1};
float X[5]={1,2.5,3.6,4,5};
float Y[5];
int i,j;
for(j=0;j<=4;j++)
{
for(i=0;i<=9;i++)
{
if(x[i]<X[j] && X[j]<=x[i+1])
{
Y[j]=y[i]+((y[i+1]-y[i])/(x[i+1]-x[i]))*(X[j]-x[i]);
}
else if(X[j]==x[i])
{
Y[j]=y[i];
}
}
cout<<X[j]<< "\t"<<Y[j]<< "\n";
}

system("pause");
return 0;
}

4. oblast
58

7. #include<iostream.h>
float stepen(float x,int n);
int fakt(int n);
int main()
{
float x,S;
int n,i;
S=0;
cout<<"x=";
cin>>x;
cout<<"\nn=";
cin>>n;
for(i=0;i<=n;i++)
{
S+=stepen(x,i)/fakt(i);
}
cout<<S;
system("pause") ;
return 0;
}
float stepen(float x,int n)
{
float b=1;
int i;
for(i=1;i<=n;i++)
{
b=b*x;
}
return b;
}
int fakt(int n)
{
59

int f=1;
int i;
for(i=1;i<=n;i++)
{
f*=i;
}
return f;
}
8. #include<iostream.h>
#include<math.h>
#define Pi 3.1415926
float sabiranje(float x,float y);
float oduzimanje(float x,float y);
float mnozenje(float x,float y);
float deljenje(float x,float y);
float sinus(float x);
float cosinus(float x);
float tangens(float x);
double expon(double x);
float ctg(float x);
float log(float x);
double ln(double x);
float stepen(float x,float y);
float faktorijel(float x);

int main()
{
float a,b;
double c,d;
int operacija;

do
{
cout<<"\nMeni:";
cout<<"\noperacija
cout<<"\noperacija
cout<<"\noperacija
cout<<"\noperacija
cout<<"\noperacija

1:sabiranje";
2:oduzimanje";
3:mnozenje";
4:deljenje";
5:sinus";
60

cout<<"\noperacija 6:cosinus";
cout<<"\noperacija 7:tangens";
cout<<"\noperacija 8:exp";
cout<<"\noperacija 9:ctg";
cout<<"\noperacija 10:log";
cout<<"\noperacija 11:ln";
cout<<"\noperacija 12:stepen";
cout<<"\noperacija 13:faktorijel";
cout<<"\nizlaz:14";
cout<<"\nIzaberite operaciju";
cin>>operacija;
cout<<"\nUnos:";

switch(operacija)
{
case 1:cout<<"\nUnesite dva
broja:";cin>>a;cin>>b;cout<<a<<"+"<<b<<"="<<sabiranje(a,b);break;
case 2:cout<<"\nUnesite dva
broja:";cin>>a;cin>>b;cout<<a<<"-"<<b<<"="<<oduzimanje(a,b);break;
case 3:cout<<"\nUnesite dva
broja:";cin>>a;cin>>b;cout<<a<<"*"<<b<<"="<<mnozenje(a,b);break;
case 4:cout<<"\nUnesite dva
broja:";cin>>a;cin>>b;cout<<a<<"/"<<b<<"="<<deljenje(a,b);break;
case 5:cout<<"\nUnesite broj:";cin>>a;cout<<"sin("<<a<<")="<<sinus(a);break;
case 6:cout<<"\nUnesite
broj:";cin>>a;cout<<"cos("<<a<<")="<<cosinus(a);break;
case 7:cout<<"\nUnesite
broj:";cin>>a;cout<<"tan("<<a<<")="<<tangens(a);break;
case 8:cout<<"\nUnesite broj:";cin>>c;cout<<"exp("<<c<<")="<<exp(c);break;
case 9:cout<<"\nUnesite broj:";cin>>a;cout<<"ctg("<<a<<")="<<ctg(a);break;
case 10:cout<<"\nUnesite broj:";cin>>a;cout<<"log("<<a<<")="<<log(a);break;
case 11:cout<<"\nUnesite broj:";cin>>c;cout<<"ln("<<c<<")="<<ln(c);break;
case 12:cout<<"\nUnesite dva
broja:";cin>>a;cin>>b;cout<<a<<"^"<<b<<"="<<pow(a,b);break;
case 13:cout<<"\nUnesite broj:";cin>>a;cout<<a<<"!="<<faktorijel(a);break;
default:cout<<"Nepostojeci izbor";break;
}
}
while (operacija!=15);
system("pause");
61

return 0;
}
float sabiranje(float x,float y)
{
return (x+y);
}
float oduzimanje(float x,float y)
{
return (x-y);
}
float mnozenje(float x,float y)
{
return (x*y);
}
float deljenje(float x,float y)
{
if (y==0)
cout<<"Nedozvoljena operacija";

return (x/y);
}
float sinus(float x)
{
return sin(x*(Pi/180));
}
float cosinus(float x)
{
return cos(x*(Pi/180));
}
float tangens(float x)
{
return tan(x*(Pi/180));
}
62

double expon(double x)
{
return exp(x);
}
float ctg(float x)
{
return atan(x);
}
float log(float x)
{
return log10(x);
}
double ln(double x)
{
return log(x);
}
float stepen(float x,float y)
{
return pow(x,y);
}
float faktorijel(float x)
{
int fact=1;
int i;
for(i=x;i>0;i--)
{
fact=fact*i;
}
return fact;
}

5. oblast
5.
#include <iostream.h>
63

int main()
{
int i,j,min,max;
int a[100][100],n,m;
int indexImin,indexJmin,indexImax,indexJmax;
cout<<"Ovo je program za odredjivanje minimuma i maksimuma matrice a(i)(j)";
cout<<"\nUnesite broj vrsta matrice n:";
cin>>n;
cout<<"\nUnesite broj kolona matrice m:";
cin>>m;
cout<<"\nUnesite clanove matrice:\n";
for(i=0;i<n;i++)
//for petlja za unos elemenata
{
for(j=0;j<m;j++)
{
cout<<"a("<<i+1<<")("<<j+1<<")=";
cin>>a[i][j];
}
}
min=a[0][0];
max=a[0][0];
indexImin=0;
indexJmin=0;
indexImax=0;
indexJmax=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[i][j]<min)
{
min=a[i][j];
indexImin=i;
indexJmin=j;
}

//min uzima vrednost prvog clana


//max uzima vrednost prvog clana
//indeksi uzimaju vrednosti prvog clana

//for petlja za uporedivanje clanova

if(a[i][j]>max)
{
max=a[i][j];
64

indexImax=i;
indexJmax=j;
}
}
}
cout<<"\nMaksimalni clan niza:"<<max<<" i="<<indexImax+1<<"
j="<<indexJmax+1;
cout<<"\nMinimalni clan niza:"<<min<<" i="<<indexImin+1<<"
j="<<indexJmin+1;
return 0;
}
6. #include<iostream.h>
int main()
{
int i,j,k,min,index,temp;
int a[100][100],n,m;
cout<<"Ovo je program za uredjenje redova matrice u rastuci\n";
cout<<"\nUnesite broj elemenata vrste n:";
cin>>n;
cout<<"\nUnesite broj elemenata kolone m:";
cin>>m;
cout<<"\nUnesite elemente matrice:\n";

for(i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
cout<<"a("<<i+1<<"]["<<j+1<<"]=";
cin>>a[i][j];
}
}
cout<<"\n\n";
//unesena je
for(i=0;i<n;i++)
{
65

for (j=0;j<m;j++)
{
cout<<a[i][j]<<" ";
}
cout<<"\n";
}

for(i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
for(k=0;k<m;k++)
{cout<<"j="<<j<<endl;
min=a[i][k];
minimumom
for(j=k;j<m;j++)
j-tog uporeduju medusobno
{
if(a[i][j]<min)
promenljive min
{
min=a[i][j];
index=j;
datog clana
}
}

//u ovom redu se j-ti clan niza proglasi

//zatim se u ovoj petlji ostali clanovi nakon

//ako je tekuci clan manji od vrednosti

//min uzima vrednost clana a(i)


//a promenljiva index uzima vrednost i

if(min<a[i][k])
//ako je min manji od j-tog clana, ta dva
elementa ce zameniti mesta
{
temp=a[i][k];
// temp cuva vrednost a(j)
a[i][k]=a[i][index];
//zatim a(j) uzima vrednost proglasenog
minimuma
a[i][index]=temp;
//sada je a(index) slobodan da uzme vrednost koju
je cuvao temp
}
}
}
}
cout<<"\n\n";
cout<<"Rastuci niz je:\n";
66

cout<<"\n\n";
for(i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
cout<<a[i][j]<<" ";
}
cout<<"\n";
}
system("pause");
return 0;
}
7. #include <iostream.h>
int main()
{
int n,i,j;
float a[10][10],b[10][10],S,M;
S=1; M=1;
// Unos matrice
cout<<"\nUnesite red matrice n=";cin >> n;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<"\nUnesi element matrice a(";cout<<i+1;cout<<")
(";cout<<j+1;cout<<")=";cin >> a[i][j];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
b[j][i]=a[i][j];
}
}

67

// Stampanje matrice
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<"\nElement matrice a(";cout<<i+1;cout<<")
(";cout<<j+1;cout<<")=";cout<<a[i][j];
}
}
// Stampanje transponovane matrice
cout<<"\nTransponovana matrica je: \n";
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<"\nElement matrice b(";cout<<i+1;cout<<")
(";cout<<j+1;cout<<")=";cout<<b[i][j];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(b[i][j]!=a[i][j])
{
S=0;
}
if(b[i][j]!=-a[i][j])
{
M=0;
}
}
}
if(S==1)
cout<<"\n\nMatrica je simetricna\n";

68

if(M==1)
cout<<"\n\nMatrica je antisimetricna\n";
if(S==0 && M==0)
cout<<"\n\nMatrica nije ni simetricna ni antisimetricna\n";

system("pause");
return 0;
}
8. U programu je upotrebljena kontrolna promenljiva S, koja uzima vrednost 1
ako su ispunjeni uslovi ortogonalnosti. U komentarima jeprikazan jos jedan nacin
upotrebe ove promenljive, objasniti ideju.
Napomena: Za slucaj kada su elementi matrice realni, moze se desiti da razlika
dva jednaka realna broja bude vrednost bliska nuli, ali razlicita od nule, npr. 0.480.48=-7*10-9. To je tzv. numericka nula. Kako bi program ispravno radio, umesto
oduzimanja, npr. a-b, a zatim postavljanja uslova if (rezultat==0), postavlja se
uslov if(a==b).
#include <iostream.h>
int main()
{
int n,i,j,k;
float a[10][10],b[10][10],I[10][10],S,d;
S=0;

cout<<"\nUnesite red matrice n=";cin >> n;


cout<<"\nUnesite elemente matrice a:";
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
I[i][j]=0;
cout<<"\na(";cout<<i+1;cout<<")(";cout<<j+1;cout<<")=";cin >>
a[i][j];
}
69

}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
b[j][i]=a[i][j];
}
}

cout<<"\nElementi matrice a:";


for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<"\na(";cout<<i+1;cout<<")
(";cout<<j+1;cout<<")=";cout<<a[i][j];
}
}
cout<<"\nElementi matrice b:";
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<"\nb(";cout<<i+1;cout<<")
(";cout<<j+1;cout<<")=";cout<<b[i][j];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
for(k=0;k<n;k++)
{
d=-b[i][k]*a[k][j];
if(I[i][j]==d)
{
I[i][j]=0;
70

}
else
{
I[i][j]-=d;
}
}
}
}
cout<<"\nElementi matrice proizvoda:";
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<"\nI(";cout<<i+1;cout<<")
(";cout<<j+1;cout<<")=";cout<<I[i][j];
}
}

for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if((I[i][i]==1) && (I[i][j]==0))
S=1; // S++;
}
}

if(S==1) //
if(S==n)
cout<<"\nMatrica je ortogonalna";
else
cout<<"\nMatrica nije ortogonalna";
system("pause");
return 0;
71

6.oblast
3. #include<iostream.h>
float stepen(float x, int y);
int main()
{
int x,y;
cout<<"x=";
cin>>x;
cout<<"\ny=";
cin>>y;
cout<<"\n";
cout<<stepen(x,y);
system("pause");
return 0;
}
float stepen(float x, int y)
{
if (y < 0)
{
return ((1/x)*stepen(x,y+1));
}
if (y == 0)
return 1;
else
return (x * stepen(x, y - 1));
}

72

You might also like