You are on page 1of 30

Mira Nikoli

Sadraj:
SLINOSTI I RAZLIKE C I C++
FUNKCIJE

Zbirka reenih
zadataka
iz
programskog
++
jezika C i C
2. DEO

POKAZIVAI
NIZOVI
MATRICE
MODULI
PRETRAIVANJE I SORTIRANJE
NIZOVA

Mira Nikoli

PROGRAMI U C++
1. Upotreba cin,cout
#include <iostream.h>
void main(void)
{
int x = 5,y = 7;
cout << "Unesite prvi broj ";
cin >> x;
cout << "Unesite drugi broj ";
cin >> y;
cout << endl << "Rezultati su " << endl;
cout << " x+y = " << x+y << endl;
cout << " x*y = " << x*y << endl;
}

3. Program koji resava kvadratnu jednacinu za ucitano a,b,c.


#include<iostream.h>
#include<math.h>
void main(void)
{
float a,b,c,x1,x2,d;
cout<<endl<<endl<<"Ovaj program resava kvadratnu jednacinu";
cout<<endl<<"\tax^2+bx+c=0"<<endl;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
cout<<"c=";
cin>>c;
d=b*b-4*a*c;

2. Program za izraunavanje obima i povrine trougla (Heronov obrazac)


#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <iomanip.h> //za postavljanje sirine ispisa i preciznosti
//setw(6) sirina broja je 6
//setprecision(4) decimalnih mesta 4
void main (void)
{
float a,b,c,s,o,p;
clrscr();
cout<<"Program racuna obim i povrsinu trougla pomocu Heronovog
obrasca "<<endl;

if(d>0)
{
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
cout<<endl<<"Kvadratna jednacina ima realna i
razlicita resenja:"<<endl;
cout<<" x1="<<x1<<" x2="<<x2<<endl;
}
else
if(d==0)
{
x1=b/(2*a);
cout<<endl<<"Resenja su realna i jednaka:";
cout<<endl<<"x1=x2= "<<x1<<endl;
}
else
{
x1=-b/(2*a);
x2=sqrt(-d)/(2*a);
cout<<endl<<"Resenja su konjugovano kompleksna:";
cout<<endl<<"x1= "<<x1<<"+i"<<x2;
cout<<endl<<"x2= "<<x1<<"-i"<<x2<<endl;
}

cout<<endl<<"Unesite duzine stranica trougla"<<endl;


cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
cout<<"c=";
cin>>c;
s=(a+b+c)/2;
p=sqrt(s*(s-a)*(s-b)*(s-c));
o=2*s;
cout<< setw(6)<< setprecision(4)<<endl<<"Obim je "<<o<<endl;
cout<<"Povrsina je "<<p<<endl;
getch();
}

4. Program koji racuna minimalni i maksimalni od dva ucitana broja a i b


koricenjem kraceg zapisa naredbe if
#include <iostream.h>
void main (void)
{
int a,b,min,max;
cout<<endl<<"Ovaj program racuna min i max od dva ucitana
broja a i b "<<endl;
cout<<endl<<"Ucitajte broj a=";
cin>>a;
cout<<endl<<"Ucitajte broj b=";
cin>>b;
(a>b)?(min=b,max=a):(min=a,max=b);
cout<<endl<<"max= "<<max<<" min= "<<min<<endl;

Zbirka reenih zadataka iz C jezika drugi deo


6. Program za odredjivanje Pitagorinih brojeva manjih od 40
a2+ b2= c2
#include <iostream.h>
#include <math.h>
void main(void)
{
int a,b,c;
cout<<"Ovaj program odredjuje Pitagorine brojeve a,b<40"<<endl;
cout<<"\t\ta*a+b*b=c*c"<<endl<<endl;
for(a=1;a<=40;a++)
for(b=a;b<=40;b++)
{
c=sqrt(float(a*a+b*b));
//funkcija sqrt mora imati float ili double argument
if(a*a+b*b==c*c)
cout<<"\t"<<a<<"\t"<<b<<"\t"<<c<<"\t\t"<<endl;
}
}

}
5. Program za nalaenje najveceg zajednickog delioca dva nenegativna
cela broja
#include<iostream.h>
void main(void)
{
int prvi, drugi, pomocni;
cout<<"Ukucajte dva nenegativna cela broja
cin>>prvi>>drugi;

"<<endl;

while(drugi!=0)
{
pomocni=prvi%drugi;
prvi=drugi;
drugi=pomocni;
}
cout<<"Najveci zajednicki delilac ovih brojeva je "<<prvi<<endl;

7. Program za odredjivanje savrenih brojeva do uitanog m


( broj je savren ako je jednak sumi svojih inilaca 6=1+2+3)
#include <iostream.h>
void main(void)
{
int i,n,m,suma;
cout<<endl<<"Ovaj program racuna savrsene brojeve od 2 do
ucitanog m"<<endl;
cout<<endl<<"Ucitajte m ";
cin>>m;
cout<<endl<<"Savrseni brojevi od 2 do "<<m<<" su"<<endl;
for(n=2;n<=m;n++)
{
suma=1;
for(i=2;i<=n/2;i++)
if (n%i==0)
suma+=i;
if (suma==n)
cout<<n<<"\t";
}
cout<<endl;

}
}

Mira Nikoli
8. Program koji uitava niz, rauna zbir i srednju vrednost
#include <iostream.h>
void main(void)
{
int i;
float x[10],xsr,s;
cout<<"Ucitava se niz, racuna zbir i srednja vrednost"
<<endl<<endl;
cout<<"Unesite 10 elemenata niza "<<endl<<endl;
for (s=0,i=0;i<10;i++)
{
cout<<"x["<<i+1<<"]= ";
cin>>x[i];
s+=x[i];
}
xsr=s/10;
cout<<endl<<"Zbir clanova niza je "<<s<<", a prosecna vrednost je "
<<xsr<<endl;
}
9. Program koji ucitava niz i menja predznak elementima sa parnim
indeksom
#include<iostream.h>
void main(void)
{
int i,n,a[50];
cout<<" Ovaj program za ucitanu duzinu niza"<<endl;
cout<<" obrce predznak brojevima sa parnim indeksom"<<endl;
cout<<endl<<"Ucitaj duzinu niza: ";
cin>>n;
cout<<endl;
for(i=0;i<n;i++)
{
cout<<"\t a["<<i+1<<"]="; cin>>a[i];
if(i%2==1)
//smatramo da je neparno i ono koje je na ekranu,
a[i]=-a[i];
//a ne ono u programu
}
for(i=0;i<n;i++)
cout<<endl<<" a["<<i+1<<"]="<<a[i];
cout<<endl;
}

10. Program koji uitava niz od 10 kompleksnih brojeva i rauna


njihove module (efektivne vrednosti)
#include<iostream.h>
#include<math.h>
void main(void)
{
int i;
double Re[10], Im[10], m=0;
char predzn='-';
cout<<"Program ispisuje 10 kompleksnih brojeva i racuna "<<endl;
cout<<"\tnjihov moduo (efektivnu vrednost)"<<endl<<endl;
for(i=0;i<10;i++)
{
cout<<" Re["<<i+1<<"]=";
cin>>Re[i];
cout<<" Im["<<i+1<<"]=";
cin>>Im[i];
}
cout<<endl<<"\tKompleksno\t\tEfektivno"<<end;

//zaglavlje

for(i=0;i<10;i++)
{
m=sqrt((Re[i]*Re[i])+(Im[i]*Im[i]));
if(Im[i]>=0) predzn='+';
else predzn='-';
coutl<<"\t"<<Re[i]<<predzn<<"j"<<fabs(Im[i])<<"\t\t\t"<<
m<<endl;
}

Sledee zadatke uradi za vebu:


Ulaz-izlaz
Program za raunanje vrednosti izraza

( a b) 3
cos(c)

c2
a+b

Zbirka reenih zadataka iz C jezika drugi deo


3

Program za raunanje vrednosti izraza

a b
c+d
2

Program koji rauna vrednost f(x) za ucitano x.


-2
x<-2
f(x)=
x
-2<x<2
10-2x x>2

Program za izraunavanje zbira cifara trocifrenog broja abc


Primeti: a= n / 100;
b= n / 10 % 10;
c= n % 10;

Program koji rauna koliki je maksimalni od tri uitana broja a,b,c

Program za izraunavanje otpornosti bakarnog provodnika ako se znaju


duina i prenik u mm.
# define ROcu 1.588e-8
# define PI 3.14
S=(d/1000)*(d/1000)*PI/4;
R=ROcu*L/S;
Program za izraunavanje kapacitivnosti ploastog kondenzatora ako se zna
povrina i rastojanje izmeu obloga u mm.
# define E0 8.854e-12
c=epsr*E0*s/(d*1000);
Primeti: Kapacitet kondenzatora je vrlo mala veliina p se mora pisati
eksponencijalno inae ce izgledati da je nula! printf("\n\tC=%e",c)
Program za pretvaranje otpornosti vezanih u zvezdu u otpore vezane u
trougao
Rab=Ra+Rb+Ra*Rb/Rc ......
Program za pretvaranje R vezanih u trougao u otpore vezane u zvezdu
Ra=Rac*Rab/(Rac+Rbc+Rab) ......

Uslovi
Program za izraunavanje apsolutne vrednosti broja bez upotrebe abs
Program koji rauna minimalni i maksimalni od dva uitana broja a i b

Program koji za uitano x tampa vrednost funkcije


-1,
x<0
y=
x2-1,
0x3
8,
x>3

Program koji rauna koliki je zbir cifara broja abc umanjen za max(a,b,c)
Za uitani trocifren broj abc nai najveu i najmanju cifru
Program koji rauna da li se dati krug moe upisati u kvadrat i obrnuto.
Uitavaju se povrine kvadrata i kruga Pkv i Pkr.
Pomo: a=sqrt(Pkv);
r=sqrt(Pkr/PI);
a*sqrt(2)<=2*r Kvadrat stranice moze da se upise u krug
2*r<=a
Krug moze da se upise u kvadrat
Program koji ispisuje uspeh za uitanu ocenu korienjem naredbe switchcase
switch (ocena)
{
case 5: printf("odlican");break;
case 4: printf("vrlo dobar");break;
case 3: printf("dobar");break;
case 2: printf("dovoljan");break;
default: printf("nekorektna ocena"); /*svi ostali slucajevi*/
}

Ciklusi

Korienjem kraeg zapisa naredbe if


(a>b)?(min=b,max=a):(min=a,max=b);
napii program za izraunavanje izraza za uitane x i y:

Program koji proverava da li je uitani broj abc Armstrongov


abc=a3+ b3+ c3
Primeti: a= n / 100;
b= n / 10 % 10;
c= n % 10;

z=

max( x, y )
1 min( x, y )

Programi koji ranaju S:


1. S=1+2+3+.......+n
2. P=1*2*3*4*......*n=n!
3. S=2+4+6+.......+100
4. S=21+23+25+.......+99
5. Proizvod parnih brojeva izmeu m i n
6. Zbir neparnih brojeva izmeu k i n

Mira Nikoli
Program za izraunavanje 1+2+3+...+n
Program za izraunavanje faktorijela
Program za traenje srednje vrednosti n celih pozitivnih brojeva
Program za izraunavanje m+(m+1)+(m+2)+...+n
Program za izraunavanje m*(m+1)*(m+2)+...*n

Program za odredjivanje trocifrenih Armstrongovih brojeva


abc=a3+ b3+ c3
Pomo: for(m=100;m<=999;m++)
{
a=...
b=...
c=....;
if (m==a*a*a+b*b*b+c*c*c)
printf("%d\n",m);

Program za odreivanje n-tog Fibonaijevog broja


f1=1, f2=1,
fn=fn-2+fn-1

Program za izraunavanje 1-1/2+3-1/4...+n


Pomo: if(i%2==0)
S+=i...

Program za nalaenje zbira prvih n Fibonaijevih brojeva

Program koji rauna sumu kvadrata parnih, a kubova neparnih brojeva izmedju
min

Program za nalaenje najveeg zajednikog delioca dva cela broja


Program za odredjivanje trocifrenih prostih brojeva

Program rauna zbir kubova parnih, a recipronih vrednosti kvadrata neparnih


brojeva izmedju m i n
Program koji odreuje maksimalnu i minimalnu temperaturu maxT i minT
tokom n dana merenja t
Program koji ispisuje tabelu funkcije y=-3x2+2x+1 od take a sa korakom dx u
n tacaka
2

Program koji ispisuje tabelu funkcije y=sin(x)+2x u intervalu od a do b u n


tacaka
Pomo: pre ciklusa for izraunaj prirataj dx=(b-a)/(n-1);
Program rauna n puta koren za uitano n 3 +
2

3 + 3 + ..... 3

Program koji odreuje koliko sati se planinar penje na vrh ako svakog sata ide
25 posto sporije
Pomo: v - polazna visina, h - ciljna visina, a - visina koju savlada
prvog/tekueg sata, s tekua visina i - broj sati
while(s<h)
{
a*=0.75; s+=a;
i++; }
Program koji odreuje posle koliko godina i e broj riba u jezeru r pasti na
kritinu vrednost rkrit ako se godinje smanjuje za dati procenat p
Pomo: while(r>=rkrit)
{
r*=1-p/100; i++;
}

Nizovi

Program rauna x+x +x +...x za uitano n i x


Program rauna x+2x2+3x3+...nxn za uitano n i x
Program rauna sumu faktorijela 1!+2!+...+n! za uitano n
Pomo: pamti prethodni lan radi breg raunanja

Program koji sabira elemente niza od 5 celih brojeva


S=a1+ a2+ a3+ a4+ a5

Program za odredjivanje srednje vrednosti n celih pozitivnih brojeva

Program koji rauna proseni element niza od n celih brojeva


a1, a2, a3.... an

Program za permutovanje cifara celog broja

Uitaj niz i nai koliko je elemenata vee od prosenog


Program koji za uitani niz od 10 celih brojeva nalazi najvei element max

Zbirka reenih zadataka iz C jezika drugi deo


Program koji za uitani niz od 10 celih brojeva nalazi najmanji element min
Program koji za uitani niz od 10 celih brojeva nalazi najvei element max i
njegovu poziciju maxpoz
Program koji za uitani niz od 10 celih brojeva nalazi najvei i najmanji element
max i min i njihove pozicije maxpoz i minpoz
Program koji uitava niz i broji neparne elemente niza
Pomo: if(a[i]%2==1) br++;
Program koji uitava niz i broji koliko je elemenata niza deljivo sa 3
Uitaj niz i izbroj parne i negativne elemente niza
Uitaj niz i izbroj neparne elemente niza deljive sa 7

Program koji uitava niz a i formira i tampa niz b tako to iz prvog niza
izbacuje sve neparne elemente
Program za sortiranje nizova realnih brojeva od najmanjeg do najveeg
(Naredba koja se razlikuje za sortiranje nizova realnih brojeva od najveeg
do najmanjeg.)
Program koji uitava niz a, sortira ga po opadajuem redu, ubacuje u njega
broj 7 na odgovarajuu poziciju i onda ga tampa.
Pomo: bolje je ubaciti 7 na kraj niza,pa ga onda sortirati!
Odredi iz koliko se razliitih cifara sastoji dati prirodni broj
Pomo: formirati niz c[10] iji su elementi broj cifara 0,1, 2,...9 u datom broju

Program koji sabira parne elemente niz sa neparnim indeksima


Program koji rauna aritmetiku sredinu pozitivnih elemenata niza
Program koji uitava niz i menja predznak elementima sa parnim indeksom
Program koji uitava niz a duzine 2n, pa od njega formira dva niza, b i c,
duzine n, tako da elementi b budu 2,4,,6..., 2n-ti element a, a elementi c
pretposlednji (2n-1), 2n-3..., 1. element a
Pomo:
b[i]=a[2*i+1];
c[i]=a[2*(n-i-1)];
Program koji za poznate nizove a i b formira niz c tako to sabira
odgovarajue parove a i b za parnoi a mnoi ih za neparno i
Pomo: ne moraju se uitavati vrednosti, ve se zadaju pri deklaraciji:
int i,a[20]={4,3,45,5,6,2,3,4,5,9,8,12,23,4,56,64,3,4,1,2},
b[20]={23,7,6,8,2,3,4,5,6,7,1,2,4,5,6,5,4,7,6,5},c[20];
Program koji uitava niz i pronalazi broj elemenata koji prethode prvom
negativnom elementu
Program koji uitava niz i pronalazi proizvod elemenata izmeu prve dve nule
u nizu ako ih ima
Program koji uitava niz a i formira i tampa niz b tako to iz prvog niza
izbacuje sve elemente deljive sa 3

Mira Nikoli

FUNKCIJE

double Sk(int m, int n)


{
double y;
for(y=0;m<=n;m++)
y+=m*m;
return(y);
}

11.Program koji rauna minimalni i maksimalni od etiri ucitana broja a,b,c i


d korienjem funkcija min(x,y) i max(x,y)
#include <iostream.h>
#include <conio.h>
int min(int x, int y)
{
return (x<y)?x:y;

int max(int x, int y)


{
return (x>y)?x:y;

void main (void)


{
int a,b,c,d;
clrscr();
cout<<endl<<"Ovaj program racuna min i max od 4 broja "<<endl;
cout<<endl<<"Ucitajte broj a=";
cin>>a;
cout<<endl<<"Ucitajte broj b=";
cin>>b;
cout<<endl<<"Ucitajte broj c=";
cin>>c;
cout<<endl<<"Ucitajte broj d=";
cin>>d;

13. Program rauna n-ti stepen realnog broja a za uitano a i n


#include <iostream.h>
#include <conio.h>
void main(void)
{
int n;
double a;
double stepen(double a, int n);

clrscr();
cout<<endl<<"Ovaj program racuna vrednost a na n-ti stepen "<<endl;
cout<<"Ucitajte a:";
cin>>a;
cout<<"Ucitajte n:";
cin>>n;

cout<<endl<<"Najveci broj je "<<max(max(a,b),max(c,d))<<endl;


cout<<endl<<"Najmanji broj je "<<min(min(a,b),min(c,d))<<endl;
}
12. Program rauna sumu kvadrata brojeva od 3 do 18 umanjenu za sumu
kvadrata brojeva od 9 do 10
#include <stdio.h>
#include <conio.h>
void main(void)
{
double Sk();
clrscr();
printf("Ovaj program racuna sumu kvadrata brojeva od 3 do 18\n");
printf("umanjenu za sumu kvadrata brojeva od 9 do 10\n");
printf(" Suma=%lf \n",Sk(3,18)-Sk(9,10));
}

//prototip funkcije

cout<<endl<<a<<" na "<<n<<".stepen je "<<stepen(a,n);


getch();
}
double stepen(double a, int n)
{
int i;
double an=1;
for (i=0;i<n;i++)
an*=a;
return(an);
}

Zbirka reenih zadataka iz C jezika drugi deo


b. u jeziku C++

14.Program za tampanje svih prostih brojeva do uitanog n


a. u jeziku C
#include<stdio.h>
#include<conio.h>
void main(void)
{
int n,m;
int prost();
textbackground(20);
textcolor(15);
clrscr();
printf("\nPROGRAM ISPISUJE PROSTE BROJEVE DO N\n");
printf("Ucitajte n, n>8 :\n\n\n");
scanf("%d",&n);

#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <iomanip.h>
int prost(int m);

}
int prost(int m)
{
int i=3;
while ((m%i!=0)&&(i<=m/2)) i+=2;
if (i>m/2)
return(m);
else return(0);
}

//prototip funkcije

void main(void)
{
int n,m;
clrscr();
cout<<endl<<"Ovaj program ispisuje proste brojeve od 2 do
ucitanog n"<<endl;
cout<<endl<<"Ucitajte n: ";
cin>>n;
cout<<endl<<"Prosti brojevi od 2 do "<<n<<" su"<<endl;
cout<<"
1
3
5
7";
for(m=9;m<=n;m+=2)
if (prost(m))
cout<<setw(8)<<m;
getch();

printf("Prosti brojevi do %d su:\n",n);


printf("1\t3\t5\t7\t"); /*stampa prvih prostih brojeva*/
for(m=9; m<=n; m+=2) /*uzimamo u obzir samo neparne*/
if (prost(m))
{
printf("%d\t",m);
delay(100);
}

//za postavljanje sirine ispisa i preciznosti

}
int prost(int m)
{
int i=3;
while ((m%i!=0)&&(i<=m/2))i+=2;
if(i>m/2) return m;
else
return 0;
}

Mira Nikoli
15.Program koji za uitane 3 take tampa obim i povrinu trougla koji ine.
#include <iostream.h>
#include <conio.h>
#include <math.h>

#include <stdio.h>
#include <math.h>
#include <conio.h>

float dist(float x1, float y1, float x2, float y2)


{
return sqrt(pow(x1-x2,2)+pow(y1-y2,2));

int moze_tro(float a, float b, float c)


{
return a<b+c && b<c+a && c<a+b; }
float obim(float a, float b, float c)
{
return a+b+c;
}
float povrs(float a, float b, float c)
{
float s=(a+b+c)/2;
return sqrt(s*(s-a)*(s-b)*(s-c));

16.Program ispisuje tabelu funkcije u intervalu od a do b u 30 taaka

void main(void)
{
int i;
double a,b,r,dx=0;
double fun();
clrscr();
printf("Ovaj program ispisuje tabelu funkcije u intervalu od a do b u
30 tacaka\n\n");
printf("\t 0\t\t\t x<-r \n ");
printf("y \t -sqrt((r*r)-(x*x)) \t 0<x<-r \n ");
printf("\t sqrt(x-r) \t\t x>r \n ");

void main (void)


{
float x1,x2,x3,y1,y2,y3,a,b,c;
clrscr();
cout<<"Program racuna obim i povrsinu trougla"<<endl;
cout<<"ako su date koordinate 3 temena "<<endl;
cout<<endl<<"Unesite koordinate tacke 1:"<<endl;
cin>>x1>>y1;
// odjednom i x i y !!
cout<<endl<<"Unesite koordinate tacke 2:"<<endl;
cin>>x2>>y2;
cout<<endl<<"Unesite koordinate tacke 3:"<<endl;
cin>>x3>>y3;
a=dist(x1,y1,x2,y2);
b=dist(x1,y1,x3,y3);
c=dist(x3,y3,x2,y2);
if (moze_tro(a,b,c))
{
cout<<endl<<"Obim je "<<obim(a,b,c);
cout<<endl<<"Povrsina je "<<povrs(a,b,c)<<endl;
}
else
cout<<endl<<"Ove 3 tacke ne obrazuju trougao";
getch();
}

10

printf("\nUcitajte a=");
scanf("%lf",&a);
printf("Ucitajte b=");
scanf("%lf",&b);
printf("Ucitajte r=");
scanf("%lf",&r);
printf("\t\tx\t\ty\n\n");
dx=(b-a)/29;
for(i=0;i<30;i++)
printf("\t %8.4lf\t %8.4lf\n",a+(i*dx),fun(r,a+(i*dx)));
}
double fun(double r, double x)
{
double y;
if(x<-r) y=0;
else
if(x<0)
y=-sqrt((r*r)-(x*x));
else
if(x<r) y=0;
else
y=sqrt(x-r);
return(y);
}

Zbirka reenih zadataka iz C jezika drugi deo

Globalni parametri
17.Napisati program koji rauna obim i povrinu pravougaonika ije su
stranice a i b korienjem globalnih parametara. Ovaj postupak je
koristan da se program podeli na vie manjih celina, radi bolje itljivosti.
#include <iostream.h>
float a, b, O, P;
// globalni parametri
void pravougaonik()
// funkcija nema ulazne parametre
{
O=2*(a+b);
P=a*b;
}
// funkcija nema return umesto tipa stoji void
// ima vise od jednog rezultata - O, P
// prenose se kao globalne promenljive
void main(void)
{
cout << "Ovaj program racuna obim i povrsinu pravougaonika "<<endl;
cout << "Unesite stranicu a ";
cin >> a;
cout << "Unesite stranicu b ";
cin >> b;
pravougaonik();
//poziv funkcije
cout << endl << "Rezultati su " << endl;
cout << " Obim je " <<O<< endl;
cout << " Povrsina je " << P << endl;
}

void DvaRealna()
{
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
cout<<endl<<"Kvadratna jednacina ima realna i razlicita
resenja:"<<endl;
cout<<" x1="<<x1<<" x2="<<x2<<endl;
}
void KompleksnoKonjugovana()
{
x1=-b/(2*a);
x2=sqrt(-d)/(2*a);
cout<<endl<<"Resenja su konjugovano kompleksna:";
cout<<endl<<"x1= "<<x1<<"+i"<<x2;
cout<<endl<<"x2= "<<x1<<"-i"<<x2<<endl;
}
void main(void)
{
cout<<endl<<endl<<"Ovaj program resava kvadratnu jednacinu";
cout<<endl<<"\tax^2+bx+c=0"<<endl;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
cout<<"c=";
cin>>c;
d=b*b-4*a*c;

18.Program koji resava kvadratnu jednacinu za ucitano a,b,c.

if(d==0) JednoRealno();
else
if(d>0) DvaRealna();
else KompleksnoKonjugovana();

#include<iostream.h>
#include<math.h>
float a,b,c,x1,x2,d;

void JednoRealno();
{
x1=b/(2*a);
cout<<endl<<"Resenja su realna i jednaka:";
cout<<endl<<"x1=x2= "<<x1<<endl;
}

11

Mira Nikoli

REKURZIVNE FUNKCIJE
19.Napisati program koji ispisuje tabelu faktorijela
#include <iostream.h>
#include <iomanip.h>
long faktorijel(int n)
{
return (n==0) ? 1 : n*faktorijel(n-1);
}
void main(void)
{
int i,m;
cout<<endl<<"Unesite duzinu tabele faktorijela m<14, m= ";
cin>>m;
cout<<endl<<"\t\t i\t\t i! "<<endl<<endl;
for(i=1;i<=m;i++)
cout<<"\t\t"<<setw(3)<<i<<setw(16)<<faktorijel(i)<<endl;
}
20.Napisati program koji ispisuje n lanova Fibonaijevog niza pri emu
koristi rekurzivnu funkciju
#include <iostream.h>
long fib(int k)
{
if(k==1||k==2) return 1;
else return(fib(k-1)+fib(k-2));
}
void main(void)
{
int n,i;
cout<<endl<<"Program za racunanje Fibonacijevog niza,n<35:"<<endl;
cout<<"\tn=";
cin>>n;
cout<<endl<<endl;
for (i=1;i<=n;i++)
cout<<"\tf("<<i<<")= "<<fib(i)<<endl;
}

12

21.Napisati program koji ispisuje n-ti lan Fibonaijevog niza pri emu
koristi rekurzivnu funkciju
#include <iostream.h>
long fib(int k)

{........}

void main()
{
int n, nbroj;
cout << "Unesi redni broj zeljenog Fibonacijevog broja: ";
cin >> n;
cout<<endl<<endl;
nbroj = fib(n);
cout << nbroj << " je " << n << "-ti Fibonacijev broj\n";
}
22.Napisati program koji rauna novani iznos kojim raspolae ulaga
posle n godina ako je godinja kamata p%godinje
#include <stdio.h>
#include <conio.h>
double iznos(int n, double p, double s)
{
if (n!=0)
return ((1+p/100)*iznos(n-1,p,s));
else return(s);
}
void main(void)
{
int n;double p,s;
clrscr();
printf("\nOvaj program racuna vrednost uloga posle n godina \n");
printf("\tuz godisnju kamatu od p%\n\n");
printf("pocetna suma je dinara ");
printf("godisnja kamata je ");
printf("broj godina je ");

scanf("%lf",&s);
scanf("%lf",&p);
scanf("%d",&n);

printf("\nUstedjevina posle %d godina uz %4.2lf kamate\n",n,p);


printf("\tiznosi %8.2lf dinara\n",iznos(n,p,s));
}

Zbirka reenih zadataka iz C jezika drugi deo

Sledee zadatke uradi za vebu:

POKAZIVAI

Program za raunanje vrednosti izraza 52+62+..+.82 - 32 - 22 - 12

Pokazivai i funkcije

Program rauna A2+(A+1)2+(A+2)2 - B2 - (B+1)2 - (B+2)2 za uitano A i B

23.Napisati program koji rauna obim i povrinu pravougaonika ije su


stranice a i b korienjem bonih efekata funkcije obim_povrs

Program za raunanje vrednosti izraza 3*4 +4*5+..+.7*8 9*10 10*11


11*12
Program koji rauna sumu faktorijela 1!+2!+...+n! za uitano n
Program koji rauna x+2x2+3x3+...nxn za uitano n i x
Program koji ispisuje tabelu funkcije
-2
x<-2
f(x)=
x
-2<x<2
10-2x x>2
od take a sa korakom dx u n tacaka
Program koji ispisuje tabelu funkcije
-1,
x<0
y=
x2-1,
0x3
8,
x>3
u intervalu od a do b u n tacaka

#include <iostream.h>
void obim_povrs(float a, float b, float *pO, float *pP)
{
*pO=2*(a+b);
*pP=a*b;
}
// bocni efekti funkcije ima vise od jednog rezultata
// pO, pP - pokazivacki parametri prenose se pomocu adrese
void main(void)
{
float a,b,O,P;
cout << "Ovaj program racuna obim i povrsinu pravougaonika "<<endl;
cout << "Unesite stranicu a ";
cin >> a;
cout << "Unesite stranicu b ";
cin >> b;
obim_povrs(a,b,&O,&P);
cout << endl << "Rezultati su " << endl;
cout << " Obim je " <<O<< endl;
cout << " Povrsina je " << P << endl;

Program koji ispisuje k-ti prost broj korienjem funkcije prost


Program koji rauna broj kombinacija m-te klase od n elemenata, korienjem
funkcije faktorijel

C=

( )
n
m

n!
=
m!(n m)!

Program za odredjivanje trocifrenih brojeva (ako ih ima )za koje vai:


abc=a!+ b!+ c!
Programi koji raunaju S korienjem rekurzivne funkcije:
1. S=1+2+3+.......+n
2. P=1*2*3*4*......*n=n!
3. S=2+4+6+.......+100
4. S=21+23+25+.......+99

//poziv funkcije

}
24.Program za izraunavanje obima i povrine trougla (Heronov obrazac)
#include <iostream.h>
#include <conio.h>
#include <math.h>
void obim_povrs(float a, float b, float c, float *pO, float *pP)
{
float s;
s=(a+b+c)/2;
*pO=2*s;
*pP=sqrt(s*(s-a)*(s-b)*(s-c));
}

13

Mira Nikoli
void main (void)
{
float a,b,c,O,P;
clrscr();
cout<<"Program racuna obim i povrsinu trougla pomocu Heronovog
obrasca "<<endl;
cout<<endl<<"Unesite duzine stranica trougla"<<endl;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
cout<<"c=";
cin>>c;
obim_povrs(a,b,c,&O,&P);

//poziv funkcije

cout<<"Obim je "<<O<<endl;
cout<<"Povrsina je "<<P<<endl;
getch();
}

26.Napisati program koji rauna sumu kvadrata i kubova brojeva od


uitanog m do n korienjem jedinstvene funkcije kvadrat_kub
#include <stdio.h>
#include <conio.h>
void main(void)
{
int m,n;
long p,q;
void kvadrat_kub();
clrscr();
printf("\n\nZa ucitano m i n ovaj program racuna \n");
printf("p=mm+(m+1)(m+1)+...+nn i q=mmm+(m+1)(m+1)(m+1)+...+nnn\n\n");
printf("Ucitajte m i n :\n\n\n");
printf("m=");
scanf("%d",&m);
printf("n=");
scanf("%d",&n);

25.Napisati program koji rauna minimum i maksimum od dva broja a i b


korienjem jedinstvene funkcije minimax
#include <iostream.h>
#include <conio.h>
void minimax(int a, int b, int *min, int *max)
{
if (a>b) {*min=b; *max=a;}
else {*min=a; *max=b;}
}
void main(void)
{
int a,b,min,max;
clrscr();
cout<<"a= "; cin>>a;
cout<<"b= "; cin>>b;
minimax(a,b,&min,&max);
cout<<endl<<"Najveci je broj "<<max;
cout<<endl<<"Najmanji je broj "<<min;
getch();
}

14

kvadrat_kub(m,n,&p,&q);
printf("\nOd broja %d do broja %d \n",m,n);
printf("suma kvadrata iznosi p=%ld, a kubova q=%ld \n",p,q);
}
void kvadrat_kub(int m, int n, long *kv, long *kub)
{
int i;
*kv=*kub=0;
for (i=m;i<=n;i++)
{
*kv+=i*i;
*kub+=i*i*i;
}
}

Zbirka reenih zadataka iz C jezika drugi deo


cout<<endl<<" Uneti 20 clanova niza:"<<endl;
for(px=x;px<x+20;px++)
{
cin>>*px;
xsr+=*px;
}
xsr/=20;

Pokazivai i nizovi
27.Napisati program koji rauna srednju vrednost pozitivnih elemenata niza
#include<iostream.h>
#include<conio.h>
void main(void)
{
int a[100],n,*p,k=0;
float asr=0;
clrscr();
cout<<"Program ucitava niz od n celih brojeva i racuna "<<endl;
cout<<"srednju vrednost pozitivnih elemenata niza "<<endl<<endl;
cout<<"n=";

for(px=x;px<x+20;px++)
if (*px>xsr) k++;
cout<<"Prosecni element u nizu je "<<xsr<<endl;
cout<<"Natprosecnih je "<<k<<"elemenata";
getch();
}

cin>>n;

cout<<endl<<"Ucitajte elemente niza."<<endl;


cout<<"Unesite ih u jednom redu i razdvojte sa tab "<<endl;
for(p=a;p<a+n;p++) //primeti: moze se i preterati sa unosom,
{ cin>>*p;
//ali program registruje samo n elemenata
if (*p>0)
{
asr+=*p;
k++;
}
}
if (k>0)
cout<<"Srednja vrednost pozitivnih je "<<asr/k<<endl;
else
cout<<"Nema pozitivnih elemenata "<<endl;
getch();

29.Napisati program koji od unetog niza realnih brojeva A generie novi niz
B sortiran u rastuem poretku. Realizovati zamenu elemenata niza
korienjem pokazivakih promenljivih. Ispisati nizove A i B.
#include <stdio.h>
void main(void)
{
double A[15],B[15];
int i,j,n;
void zameni (double *a,double *b);
printf("\nUnesite duzinu niza : ");
scanf("%i",&n);
printf("\nUnesite clanove niza : ");
for (i=0;i<n;i++)
{
scanf("%lf",&A[i]);
B[i]=A[i];
}

}
28.Napisati program koji rauna koliki je proseni elemant u nizu i koliko je
elemanata niza iznad proseka

for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (B[i]>B[j]) zameni (&B[i],&B[j]);

#include<iostream.h>
#include<conio.h>
void main(void)
{
int i,x[20],*px,k=0;
float xsr=0;
clrscr();
cout<<"Ovaj program racuna koliko je elemenata miza iznad proseka";

for (i=0;i<n;i++)
printf(" A[%d] = %.2lf\t B[%d] = %.2lf\n",i,A[i],i,B[i]);
}

15

Mira Nikoli
void zameni (double *a,double *b)
{
double temp;
temp=*a;
*a=*b;
*b=temp;
}
30.Napisati program koji rauna koliki je maksimalni elemant u nizu i koliko
puta se pojavljuje

31.Napisati program koji rauna minimum i maks. niza i njihove pozicije


#include <iostream.h>
void min_max(int x[],int *min,int *rbrmin,int *max,int *rbrmax);
void main(void)
{
int i,n,max,rbrmax,min,rbrmin,x[50];
cout<<"Za ucitani niz x ovaj program nalazi ekstreme "<<endl;;
cout<<"\tminimum i maksimum i njihove pozicije"<<endl;

#include<iostream.h>
#include<conio.h>
void max(int a[],int n, int *pmax, int *pbrmax)
{
int i,m=-32768,k=0;
for(i=0;i<n;i++)
if (a[i]>m)
//prvi put se pojavljuje ovaj max
{ m=a[i]; k=1;}
else if (a[i]==m) k++;
//ovaj max se vec javljao
*pmax=m;
*pbrmax=k;
}
void main(void)
{
int i,a[50],n,m,k;
clrscr();
cout<<"Ovaj program racuna koliko puta se pojavljuje max u nizu";
cout<<endl<<" Uneti duzinu niza:";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"a["<<i+1<<"]=";
cin>>a[i];
}
max(a,n,&m,&k);
cout<<"Najveci element u nizu je "<<m<<endl;
cout<<"i pojavljuje se "<<k<<" puta";
getch();
}

16

cout<<endl<<" Unesite 10 elemenata niza X"<<endl;


for(i=0;i<10;i++)
{
cout<<"\tx["<<i+1<<"]=";
cin>>x[i];
}
min_max(x,&min,&rbrmin,&max,&rbrmax);
cout<<endl<<"Ekstremi u nizu x su "<<endl;
cout<<"\tx["<<rbrmax+1<<"]=max="<<max<<endl;
cout<<"\tx["<<rbrmin+1<<"]=min="<<min<<endl;
}
// sledi funkcija
void min_max(int x[],int *min,int *rbrmin,int *max,int *rbrmax)
{
int i;
*max=*min=x[0];
*rbrmax=*rbrmin=0;
for(i=0;i<10;i++)
{
if (x[i]>*max)
// nadjen je veci
{ *max=x[i]; *rbrmax=i;
}
if (x[i]<*min)
// nadjen je manji
{ *min=x[i]; *rbrmin=i;
}
}
}

32.Programi koji demonstriraju kako se parametri funkcije mogu proslediti


po vrednosti, preko pokazivaca ili referenci (Vai za C++, ne za C!)

Prosleivanje parametara
po vrednosti
#include <iostream.h>
void zameni(int x, int y)
{
int temp;
cout<<"F-ja zameni. Pre zamene, x: "<<x<<" y: "<<y <"\n";
temp = x;
x = y;
y = temp;
cout << "F-ja zameni. Posle zamene, x: "<<x<<" y: "<<y<<"\n";
}
void main()
{
cout << "\n\n\nPrimer prosledjivanja po vrednosti: \n\n";
int x = 5, y = 10;
cout<<"Glavni. Pre zamene, x: "<<x<<" y: "<<y<<"\n";
zameni(x,y);
cout<<"Glavni. Posle zamene, x: "<<x<<" y: "<<y<< "\n";
}
// ovaj nacin nece biti dobar, jer u funkciji vrednosti se
// zamene, ali u glavnom programu ostaju kakve su bile
Glavni. Pre zamene, x: 5 y: 10
F-ja zameni. Pre zamene, x: 5 y: 10
F-ja zameni. Posle zamene, x: 10 y: 5
Glavni. Posle zamene, x: 5 y: 10

preko pokazivaa
#include <iostream.h>
void zameni(int *px, int *py)
{
int temp;
cout<<"F-ja zameni. Pre zamene, x: "<< *px<<" y: "<<*py<< "\n";
temp = *px;
*px = *py;
*py = temp;
cout<<"F-ja zameni. Posle zamene, x: "<<*px<<" y: "<<*py<<"\n";
}

Zbirka reenih zadataka iz C jezika drugi deo


void main()
{
cout<<"\n\n\nPrimer prosledjivanja preko pokazivaca: \n\n";
x = 5, y = 10;
cout<<"Glavni. Pre zamene, x: "<<x<<" y: "<<y<<"\n";
zameni(&x,&y);
cout << "Glavni. Posle zamene, x: " << x << " y: " << y << "\n";
}
// ova dva nacin bice dobri
Glavni. Pre zamene, x: 5 y: 10
F-ja zameni. Pre zamene, x: 5 y: 10
F-ja zameni. Posle zamene, x: 10 y: 5
Glavni. Posle zamene, x: 10 y: 5

preko referenci
#include <iostream.h>
void zameni(int &x, int &y)
{
// ovaj nacin je najjednostavniji za pisanje
int temp;
cout<<"F-ja zameni. Pre zamene, x: "<<x<<" y: " <<y<< "\n";
temp = x;
x = y;
y = temp;
cout<<"F-ja zameni. Posle zamene, x: " <<x<<" y: "<<y<< "\n";
}
void main()
{
cout << "\n\n\nPrimer prosledjivanja preko referenci: \n\n";
x = 5, y = 10;
cout << "Glavni. Pre zamene, x: " << x << " y: " << y << "\n";
zameni(x,y);
cout << "Glavni. Posle zamene, x: " << x << " y: " << y << "\n";
}
Glavni. Pre zamene, x: 5 y: 10
F-ja zameni. Pre zamene, x: 5 y: 10
F-ja zameni. Posle zamene, x: 10 y: 5
Glavni. Posle zamene, x: 10 y: 5

17

Mira Nikoli
33.Program koji demonstrira kako se parametri funkcije mogu proslediti
preko referenci (Vai za C++, ne za C!) Ovaj program rasporeuje
testerasto etiri uitana broja a<b>c<d
#include <iostream.h>
#include <conio.h>
void razmeni(int &a, int &b)
{
int t;
t=a; a=b; b=t;
}
void main()
{ int a,b,c,d;
clrscr();
cout<<"Ovaj program rasporedjuje testerasto cetiri broja
a<b>c<d"<<endl;
cout<<"a= "; cin>>a;
cout<<"b= "; cin>>b;
cout<<"c= "; cin>>c;
cout<<"d= "; cin>>d;
if (a>b) razmeni(a,b);
if (b<c) razmeni(b,c);
if (c>d) razmeni(c,d);

int broj_dana(int g)
{ return 365+prestupna(g);}
int broj_dana_m(int m, int g)
{ int s;
switch(m)
{case 1: case 3: case 5: case 7: case 8: case 10: case12: s=31;
break;
case 4: case 6: case 9: case 11: s=30; break;
case 2:s=28+prestupna(g); break;
}
return s;
}
void sledeci(int *d, int *m, int *g)
{
int maxd;
maxd=broj_dana_m(*m,*g);
(*d)++;
if (*d>maxd) //taj dan je na kraju meseca, prelaz na sledeci mesec
{ *d=1; (*m)++;
if (*m>12) //decembar, prelaz na sledecu godinu
{ *m=1; (*g)++; }
}
}
void main(void)
{ int g,m,d;

cout<<"Posle zamene, raspored brojeva je: "<<endl;


cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
getch();

clrscr();
cout<<"Ovaj program za ucitani datum prikazuje sledeci dan"<<endl;
cout<<"godina = "; cin>>g;
cout<<"mesec = "; cin>>m;
cout<<"dan = "; cin>>d;

34.Program koji za uitani datum pokazuje koji je datum sledeeg dana.


Parametri se prenose preko pokazivaa, a koristi se nekoliko funkcija

sledeci(&d,&m,&g);
cout<<"Sledeceg dana datum je: "<<endl;
cout<<d<<". "<<m<<". "<<g<<". "<<endl;
getch();

#include <iostream.h>
#include <conio.h>
int prestupna(int g)
{ return (g%100!=0 && g%4==0 || g%400==0);}

18

Zbirka reenih zadataka iz C jezika drugi deo


35.Program koji za uitani datum pokazuje koji je datum posle n dana.
Parametri se prenose preko pokazivaa, a koristi se iste funkcije kao u
prethodnom zadatku
#include <iostream.h>
#include <conio.h>
int prestupna(int g)
{ ... }
int broj_dana(int g)
{ ... }
int broj_dana_m(int m, int g)
{ ....... }
void sledeci(int *d, int *m, int *g)
{ .... }

Sledee zadatke uradi za vebu:


Program koji rauna obim i povrinu trapeza ije su osnove a i b, a visina h
korienjem bonih efekata funkcije obim_povrs
Program koji rauna zbir i razliku brojeva a i b korienjem jedinstvene funkcije
zbir_razlika
Program koji rasporeuje testerasto etiri uitana broja a>b<c>d
Program koji rauna srednju vrednost parnih elemenata niza
Program koji rauna koliki je proseni elemant u nizu i koliko je elemanata niza
ispod proseka
Program koji rauna koliki je minimalni elemant u nizu i koliko puta se
pojavljuje

void N_dana_kasnije(int n, int *d, int *m, int *g)


{ while (n--) sledeci (d,m,g); }

Program koji od unetog niza realnih brojeva A generie novi niz B sortiran u
opadajuem poretku. Realizovati zamenu elemenata niza korienjem
pokazivakih promenljivih. Ispisati nizove A i B.

void main(void)
{ int g,m,d,n;

Napisati program koji rauna minimum i maks. niza i njihove pozicije

clrscr();
cout<<"Ovaj program za ucitani datum prikazuje datum n dana
kasnije"<<endl;
cout<<"godina = "; cin>>g;
cout<<"mesec = "; cin>>m;
cout<<"dan = "; cin>>d;
cout<<"Koliko dana kasnije? n = "; cin>>n;

Funkcija koja vraa datum prethodnog dana


void prethodni(int *d, int *m, int *g)
Program koji koristi prethodne funkcije i koji za dva datuma d1,m1,g1 i
d2,m2,g2 odreuje broj dana izmeu ta dva datuma

N_dana_kasnije(n, &d,&m,&g);
cout<<endl<<"Za "<<n<<" dana datum je: "<<endl;
cout<<d<<". "<<m<<". "<<g<<". "<<endl;
getch();
}

19

Mira Nikoli

NIZOVI (ponavljanje)
36.Program koji uitava niz i broji neparne elemente niza
#include<stdio.h>
#include<conio.h>
void main (void)
{
int i, a[6],br;
clrscr();
printf("\nProgram broji neparne elemente niza\n");
for(i=0,br=0;i<6;i++)
{
printf("\t a[%d]=",i+1);
scanf(" %d",&a[i]);
if(a[i]%2==1) br++;
}
printf("\nUkupan broj neparnih brojeva je\tbr=%d",br);
}

38.Program za odredjivanje broja elemenata niza pre prve nule


#include<iostream.h>
#include<conio.h>
void main (void)
{
int i, a[16];
clrscr();
cout<<endl<<"Program broji elemente niza pre prve nule"<<endl;
for(i=0;i<16;i++)
{
cout<<"a["<<i+1<<"]=";
cin>>a[i];
}
i=0;
while(i<16 && a[i]!=0)
i++;
cout<<endl<<"Broj elemenata niza pre prve nule je "<<i<<endl;
getch();
}
39.Program za odredjivanje broja elemenata niza posle prve nule

37.Program koji uitava niz i broji koliko je elemenata niza deljivo sa 3


#include<iostream.h>
#include<conio.h>
void main(void)
{
int n,i,br=0,a[50];
clrscr();
cout<<endl<<"Unesi broj elemenata niza ";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"a["<<i+1<<"]=";
cin>>a[i];
if(a[i]%3==0)
br+=1;
}
cout<<endl<<"U ovom nizu ima "<<br<<" elemenata deljivih sa 3"<<endl;
getch();
}

20

#include<stdio.h>
#include<conio.h>
void main (void)
{
int i, n, a[50];
clrscr();
printf("\nProgram broji elemente niza posle prve nule\n");
printf("\nDuzina niza je ");
scanf(" %d",&n);
for(i=0;i<n;i++)
{
printf("\t a[%d]=",i+1);
scanf(" %d",&a[i]);
}
i=0;
while(i<n && a[i]!=0)

i++;

printf("\nBroj elemenata niza posle prve nule je %d",n-1-i);


}

40.Program za sabiranje elemenata niza izmedju prve dve nule (ili od nule
do kraja ako je samo jedna nula);
#include<iostream.h>
#include<conio.h>
void main (void)
{
int i, n, s=0;
static int a[13]={ 1,0, 2, 3, 4,1,5, 2,4, 4,1, 0, 3

};

clrscr();
cout<<endl<<"Program sabira elemente niza izmedju prve dve nule"<<endl;
for(i=0;i<13;i++)
{
cout<<"a["<<i+1<<"]=";
cin>>a[i];
}
i=0;
while(i<13 && a[i]!=0)
i++; /*prolaz kroz niz do prve nule*/
i++;
while(i<13 && a[i]!=0)
/*sabiranje od prve do druge nule*/
{
s+=a[i];
i++;
}
cout<<endl<<"Suma elemenata niza izmedju prve dve nule je "<<s<<endl;
getch();
}
41.Program koji uitava niz a duzine 2n, pa od njega formira dva niza, b i c,
duzine n, tako da elementi b budu 2,4,,6..., 2n-ti element a, a elementi c
pretposlednji (2n-1), 2n-3..., 1. element a
#include<stdio.h>
#include<conio.h>
void main(void)
{
int n,i,a[100],b[50],c[50];
clrscr();
printf("\n\nProgram pravi nizove b i c od niza a");

Zbirka reenih zadataka iz C jezika drugi deo


printf("\n\nUcitajte duzinu nizova b i c ");
scanf("%d",&n);
printf("\n\nUcitaj niz a koji je dugacak %d elemenata \n",2*n);
for(i=0;i<2*n;i++)
{
printf("\ta[%d]=",i+1);
scanf("%d",&a[i]);
}
printf("\n\nElementi nizova b i c su:\n ");
for(i=0;i<n;i++)
{
b[i]=a[2*i+1];
c[i]=a[2*(n-i-1)];
printf("\tb[%d]=%d\tc[%d]=%d\n",i+1,b[i],i+1,c[i]);
}
}
42.Program koji uitava niz i pronalazi maksimalan element i njegovu
poziciju
#include<stdio.h>
#include<conio.h>
void main (void)
{
int n,i,max,maxpoz=0,x[30];
clrscr();
printf("\n\t Program odredjuje maksimalan element niza:");
printf("\n Broj elemenata celobrojnog niza X je:");
scanf("%d",&n);
printf("\n Unesite niz X:\n\n");
for(i=0;i<n;i++)
scanf("%d",&x[i]);
max=x[0]; /*pretpostavka da je prvi najveci*/
for(i=0;i<n;i++)
if (x[i]>max)
{
max=x[i];
/*nadjen je veci*/
maxpoz=i;
}
printf("\n\n\t%d. element niza je maksimalan \n",maxpoz+1);
printf("\t Xmax=%d \n",max);
}

21

Mira Nikoli
43.Program za sortiranje niza realnih brojeva od najmanjeg do najveeg
#include<iostream.h>
#include<conio.h>
void main(void)
{
int n,i,j;
float priv, x[100];
clrscr();
cout<<endl<<"Duzina niza n="; cin>>n;
for(i=0;i<n;++i)
//Ucitavanje n brojeva
{
cout<<" x["<<i+1<<"]=";
cin>>x[i];
}
for(j=0;j<n-1;++j)
//Sortiranje
for(i=j+1;i<n;++i)
if(x[i]>x[j])
{
priv=x[j];
x[j]=x[i];
x[i]=priv;
}
//Stampanje sortiranih brojeva
cout<<endl<<"Sortirani brojevi:"<<endl;
for(i=0;i<n;++i)
cout<<endl<<"x["<<i+1<<"]="<<x[i];
getch();
}

Sledee zadatke uradi za vebu:


Program koji uitava niz a i formira i tampa niz b tako to iz prvog niza
izbacuje sve elemente deljive sa 3
Program za sabiranje elemenata niza pre prvog neparnog elementa

MATRICE
44.Program za unos matrice i raunanje prosenog elementa.
#include <iostream.h>
#include <conio.h>
void main(void)
{
int i,j;
float x[4][4], xsr,s;
clrscr();
cout<<"Ucitava se matrica, racuna zbir i srednja vrednost"<<endl;
cout<<"Unesite elemente matrice "<<endl<<endl;
for (s=0,i=0;i<4;i++)
for (j=0;j<4;j++)
{
cout<<"x["<<i+1<<","<<j+1<<"]= ";
cin>>x[i][j];
s+=x[i][j];
}
xsr=s/16;
cout<<endl<<"Zbir elemenata matrice "<<s<<endl;
cout<<"a prosecna vrednost je " <<xsr<<endl;
getch();
}
45.Program za sabiranje matrica koji koristi funkcije.
#include<stdio.h>
#include<conio.h>
void main (void)
{
int i,j,a[10][10],b[10][10],c[10][10];

Program koji uitava niz od 10 kompleksnih brojeva i rauna njihove module


(efektivne vrednosti)

long ucitmat();
void stampmat();

Program koji za poznate nizove a i b formira niz c tako to sabira/mnoi


odgovarajue parove a i b
c[i]=a[i]+b[i], ako je i parno, c[i]=a[i]*b[i], ako je i neparno

clrscr();
printf("\nOvaj program ucitava i sabira dve matrice i stampa ih\n");

22

/* ova funkcija ucitava matricu*/


/* ova funkcija stampa matricu*/

printf("\n\n Unesite vrednosti prve matrice:\n\n");


ucitmat(2,3,'a',a);
printf("Unesite vrednosti druge matrice:\n\n");
ucitmat(2,3,'b',b);
printf("\n Matrica A ima elemente:\n");
stampmat(2,3,'a',a);
printf("\n Matrica B ima elemente:\n");
stampmat(2,3,'b',b);
for(i=1;i<=2;i++)
/*izracunavanje elemenata c*/
for(j=1;j<=3;j++)
c[i][j]=a[i][j]+b[i][j];
printf("\n Matrica C=A+B ima elemente:\n");
stampmat(2,3,'c',c);
getch();
}
long ucitmat(int m,int n, char ime, int x[][10])
{
int i,j,a[10][10];
for(i=1;i<=m;i++,printf("\n"))
for(j=1;j<=n;j++)
{
printf("%c[%d,%d]= ",ime,i,j);
scanf("%d",&x[i][j]);
}
return (x[m][n]);
}
void stampmat(int m,int n, char ime, int x[][10])
{
int i,j;
printf("\n");
for(i=1;i<=m;i++, printf("\n"))
for(j=1;j<=n;j++)
printf("%c[%d,%d]=%d\t",ime,i,j,x[i][j]);
}

Zbirka reenih zadataka iz C jezika drugi deo


void main(void)
{
int i,j;
int x[4][3], s;
clrscr();
cout<<"Ucitava se matrica i racuna zbir elemenata
iznad glavne dijagonale";
cout<<endl<<"Unesite elemente matrice "<<endl<<endl;
for (s=0,i=0;i<4;i++,cout<<endl)
for (j=0;j<3;j++)
{
cout<<"x["<<i+1<<","<<j+1<<"]= ";
cin>>x[i][j];
if (i<j)
s+=x[i][j];
}
cout<<endl<<"Zbir elemenata iznad glavne dijagonale je "<<s<<endl;
getch();
}
47.Program za unos matrice i mnoenje elemenata na glavnoj dijagonali.
#include <iostream.h>
#include <conio.h>
void main(void)
{
int i,j;
int x[3][4], p;
clrscr();
cout<<"Ucitava se matrica i racuna proizvod na glavnoj dijagonali";
cout<<endl<<"Unesite elemenate matrice "<<endl<<endl;
for (p=1,i=0;i<3;i++,cout<<endl)
for (j=0;j<4;j++)
{
cout<<"x["<<i+1<<","<<j+1<<"]= ";
cin>>x[i][j];
if (i==j)
p*=x[i][j];
}
cout<<endl<<"Proizvod elemenata na glavnoj dijagonali je "<<p<<endl;
getch();

46.Program za unos matrice i sabiranje elemenata iznad glavne dijagonale.


#include <iostream.h>
#include <conio.h>

23

Mira Nikoli
48.Program za unos matrice i sabiranje elemenata na sporednoj dijagonali.

cout<<endl<<" Matrica M je "<<endl;


for(i=0;i<m;i++,cout<<endl)
for(j=0;j<n;j++)
cout<<" M["<<i+1<<","<< j+1<<"]= "<<M[i][j];

#include <iostream.h>
#include <conio.h>
void main(void)
{
int i,j;
int x[4][4], s;
clrscr();
cout<<"Ucitava se matrica i racuna zbir na sporednoj dijagonali"<<endl;
cout<<"Unesite elemente matrice "<<endl<<endl;
for (s=0,i=0;i<4;i++,cout<<endl)
for (j=0;j<4;j++)
{
cout<<"x["<<i+1<<","<<j+1<<"]= ";
cin>>x[i][j];
if (i+j==3)
s+=x[i][j];
}
cout<<endl<<"Zbir elemenata na sporednoj dijagonali je "<<s<<endl;
getch();
}
49.Napisati program u kojem se unosi matrica celih brojeva M, a zatim se
tampa transponovana matrica N[i,j]=M[j,i]. Prikazati matrice M i N.
#include <iostream.h>
#include <conio.h>
void main(void)
{
int i,j,M[15][15],N[15][15],m,n;
clrscr();
cout<<endl<<"Unesite dimenzije matrice m,n za M[mxn] "<<endl;
cout<<"m= ";
cin>>m;
cout<<"n= ";
cin>>n;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
cout<<"M["<<i+1<<","<< j+1<<"]= ";
cin>>M[i][j];
N[j][i]=M[i][j];
}

24

cout<<endl<<"Transponovana matrica N je"<<endl;


for(i=0;i<n;i++,cout<<endl)
for(j=0;j<m;j++)
cout<<" N["<<i+1<<","<< j+1<<"]= "<<N[i][j];
getch();
}
50.Program za raunanje srednjih vrednosti vrsta poznate matrice
#include<stdio.h>
#include<conio.h>
void main (void)
{
static float a[3][4]={ {1.0, 2.0, 3.0, 4.0},
{1.5, 2.4, 3.3, 4.2},
{1.1, 0.2, 3.3, 0.4} };
int i,j;
float sredina(float x[],int n);
clrscr();
printf("\nOvaj program racuna srednju vrednost vrste matrice\n\n");
printf("Elementi matrice a su:\n\n");
for(i=0;i<3;i++, printf("\n"))
for(j=0;j<4;j++)
printf("%.2f\t",a[i][j]);
for(i=0;i<3;i++, printf("\n"))
printf("Srednja vrednost %d. vrste je %f\n",i+1,sredina(a[i],4));
getch();
}
float sredina(float x[],int n)
{
int i;
float suma=0;
for(i=0;i<n;i++)
suma+=x[i];
return suma/n;
}

Zbirka reenih zadataka iz C jezika drugi deo


for(i=0;i<3;i++)
for(j=0;j<5;j++, printf("\n");)
printf("%10f",m[i][j]);
printf("\n k=\n");
scanf("%f",&k);
for(i=0;i<3;i++)
for(j=0;j<5;j++)
m[i][j]*=k;
printf("\n Matrica posle skalarnog mnozenja:\n");
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
printf("%10f\t", m[i][j]);
printf("\n");
}
getch();

51.Napisati program koji od unetog niza A (maksimalne duine 15


elemenata) generie kvadratnu matricu M iji su elementi reda vrednosti
iz niza A pomnoeni brojem reda. Ispisati matricu u tabelarnom formatu.
#include <iostream.h>
#include <conio.h>
void main()
{
double A[15],M[15][15];
int i,j,n;
clrscr();
cout<<endl<<"Unesite dimenziju niza : ";
cin>>n;
cout<<endl<<"Unesite clanove niza : ";
for (i=0;i<n;i++)
cin>>A[i];
for (i=0;i<n;i++)
for (j=0;j<n;j++)
M[i][j]=A[j]*(i+1);
clrscr();
cout<<endl<<"Matrica M ima sledece elemente"<<endl;
for (i=0;i<n;i++,cout<<endl)
for (j=0;j<n;j++)
cout<<" M["<<i<<","<<j<<"]="<<M[i][j];
getch();
}
52.Program za skalarno mnoenje matrica, m=k*m (svaki element matrice
mnoi se skalarom k)
#include<stdio.h>
#include <conio.h>
void main()
{
int i,j;
float k;
static float m[3][5]={

{7.0, 16.8, 5.1, 3.1, 2.9},


{1.0, 1.9, 2.9, 0.0, 7.7},
{-2.2, 1.1, 2.2, 4.4, 9.9} };

clrscr();
printf("Originalna m:\n");

}
53.Napisati program za mnoenje matrica C=AxB
#include<iostream.h>
#include<conio.h>
void main(void)
{
/*inicijalizacija matrica A i B*/
static int A[2][3]={ {1,2,4},
{11,22,33},
};
static int B[3][4]={ {1,2,3,4},
{11,22,33,44},
{10,20,30,40}, };
int i,j,k;
int C[2][4];
clrscr();
cout<<endl<<"Ovaj program mnozi matrice i stampa C=AxB"<<endl;
for(i=0;i<2;i++,cout<<endl)
for(j=0;j<4;j++)
{
for(C[i][j]=0,k=0;k<3;k++)
C[i][j]+=A[i][k]*B[k][j];
cout<<" C["<<i+1<<","<<j+1<<"]="<<C[i][j];
}
getch();
}

25

Mira Nikoli
54.Napisati program za unos matrice M[3x4], a zatim sortirati kolone
matrice u rastuem poretku po vrednosti zbira elemenata kolona.

Program za unos matrice i raunanje maksimalnog elementa.

#include <stdio.h>
#include <conio.h>
void zameni (int &A, int &B)
{
int temp=A; A=B;
B=temp;

void main(void)
{
int i,j,k,M[3][4],suma[4]={0,0,0,0};
clrscr();
printf("Unesite elemente matrice M\n");
for (i=0;i<3;i++)
for (j=0;j<4;j++)
{
printf("M[%i][%i] =",i+1,j+1);
scanf ("%i",&M[i][j]);
suma[j]+=M[i][j];
}
for (i=0;i<3;i++)
for (j=i+1;j<4;j++)
if (suma[j]<suma[i])
{
zameni(suma[j],suma[i]);
for (k=0;k<3;k++)
zameni (M[k][j],M[k][i]);
}
printf("\nSortirana matrica M je\n",M[i][j]);
for (i=0;i<3;i++,printf ("\n"))
for (j=0;j<4;j++)
printf("%i\t",M[i][j]);
getch();
}

26

Sledee zadatke uradi za vebu:

Funkcije za kvadratnu matricu koje odreuju


- sumu pozitivnih elemenata
- minimalni element na sporednoj dijagonali
- sumu elemenata ispod glavne dijagonale
- sumu elemenata iznad sporedne dijagonale
Program za unos matrice i mnoenje elemenata ispod glavne dijagonale.
Program za unos matrice i mnoenje elemenata na sporednoj dijagonali.
Program za unos matrice i sabiranje elemenata ispod sporedne dijagonale.
Program za oduzimanje matrica koji koristi funkcije.
Funkcija razmena koja zamenjuje elemente m-t i n-te
- vrste
- kolone
Program za raunanje srednjih vrednosti kolona poznate matrice
Program za unos matrice M[3x4], a zatim sortirati vrste matrice u opadajuem
poretku po vrednosti zbira elemenata vrsta.
Program dnevnik sa matricom uenika i ocenama po predmetima koji rauna
proseke uenika i proseke po predmetima.

Zbirka reenih zadataka iz C jezika drugi deo

MODULI
55.Napisati modul pomocni.h koji sadri funkcije za uitavanje i ispis niza
i matrice
#include<iostream.h>
#include<conio.h>
long ucitniz();
void stampniz();
long ucitmat();
void stampmat();

/* ova funkcija ucitava niz*/


/* ova funkcija stampa niz*/
/* ova funkcija ucitava matricu*/
/* ova funkcija stampa matricu*/

long ucitniz(int m, char ime, int x[])


{
int i;
for(i=0;i<m;i++)
{
cout<<ime<<"["<< i+1"]= ";
cin>>x[i];
}
return (x[m]);
}
void stampniz(int m, char ime, int x[100])
{
int i;
for(i=1;i<=m;i++)
cout<<ime<<"["<< i+1"]= "<<x[i];
}
long ucitmat(int m,int n, char ime, int x[][10])
{
int i,j;
for(i=0;i<m;i++,cout<<endl)
for(j=0;j<n;j++)
{
cout<<ime<<"["<< i+1<<,<<j+1<<"]= ";
cin>>x[i][j];
}
return (x[m][n]);
}

void stampmat(int m,int n, char ime, int x[][10])


{
int i,j;
cout<<endl;
for(i=0;i<m;i++, cout<<endl )
for(j=0;j<n;j++)
cout<<ime<<"["<< i+1<<,<<j+1<<"]= "<<x[i][j];
}
56.Napisati program sa prethodinim modulom koji uitava dva niza A i B, od
po 6 elemenata, pa ih sabira dajui elemente niza C, a onda tampa sva
3 niza.
#include<iostream.h>
#include<conio.h>
#include"pomocni.h"

/*obrati paznju: pisu se navodnici ", ne <>!*/

void main (void)


{
int i,j,a[10],b[10],c[10];
clrscr();
cout<<endl<<"Ovaj program ucitava i sabira dva niza i stampa ih";
cout<<endl<<"Unesite vrednosti prvog niza:"<<endl;
ucitniz(6,'a',a);
cout<<endl<<"Unesite vrednosti drugog niza:"<<endl;
ucitniz(6,'b',b);
clrscr();
cout<<endl<<"Niz A ima elemente:"<<endl;
stampniz(6,'a',a);
cout<<endl<<"Niz B ima elemente:"<<endl;
stampniz(6,'b',b);
for(i=0;i<=6;i++)
/*izracunavanje elemenata c*/
c[i]=a[i]+b[i];
cout<<endl<<"Niz C=A+B ima elemente:"<<endl;
stampniz(6,'c',c);
}

27

Mira Nikoli
57.Napisati program sa prethodnim modulom koji uitava dve matrice A i B,
od 2x3 elemenata, pa ih sabira dajui elemente matrice C, a onda
tampa sve 3 matrice.
#include<iostream.h>
#include<conio.h>
#include"pomocni.h"

/*obrati paznju: pisu se navodnici ", ne <>!*/

void main (void)


{
int i,j,a[10][10],b[10][10],c[10][10];
clrscr();
cout<<endl<<"Ovaj program ucitava i sabira dve matrice i stampa ih";
cout<<endl<<"Unesite vrednosti prve matrice:" <<endl;
ucitmat(2,3,'a',a);
cout<<endl<<"Unesite vrednosti druge matrice:" <<endl;
ucitmat(2,3,'b',b);

PRETRAIVANJE I SORTIRANJE NIZOVA - MODULI


58.Napisati program koji pretrauje niz a metodom sekvencijalnog
pretraivanja.
#include <iostream.h>
#include<conio.h>
#include"pomocni.h"
int nadjenS(int broj, int n, int niz[])
{
int i;
for(i=0;i<n;i++)
if(niz[i]==broj) return 1;
return 0;
}
void main(void)
{
int a[10],x;
clrscr();

clrscr();

cout<<endl<<"Program pretrazuje zadati niz i nalazi ucitani broj x";


cout<<endl<<"Ucitaj x ";
cin>>x;

cout<<endl<<"Matrica A ima elemente:"<<endl;


stampmat(2,3,'a',a);
cout<<endl<<"Matrica B ima elemente:"<<endl;
stampmat(2,3,'b',b);
for(i=1;i<=2;i++)
/*izracunavanje elemenata c*/
for(j=1;j<=3;j++)
c[i][j]=a[i][j]+b[i][j];
cout<<endl<<"Matrica C=A+B ima elemente:"<<endl;
stampmat(2,3,'c',c);
}

28

cout<<endl<<""\nUcitaj vrednost niza a\n");


ucitniz(10,'a',a);
if (nadjenS(x,10,a)==1)
//sekvencijalna pretraga
cout<<"Trazeni broj "<<x<< jeste u nizu a<<endl;
else cout<<"Trazeni broj "<<x<< nije u nizu a <<endl;
}

void zameni(int *a, int *b)


{
int pom;
pom=*a;
*a=*b;
*b=pom;
}

Zbirka reenih zadataka iz C jezika drugi deo


int nadjenB(int broj,int n,int niz[ ])
{
int sredina,donja=0,gornja=n-1,nasao=0;
while(donja<=gornja && !nasao)
{
sredina=(donja+gornja)/2;
if(broj==niz[sredina]) nasao=1;
else
if (broj<niz[sredina]) gornja=sredina-1;
else donja=sredina+1;
}
if(!nasao)return 0;
else return 1;
}

void selection_sort(int n,int x[])


{
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if (x[i]>x[j]) zameni(&x[i],&x[ j]);
}

void zameni(int *a, int *b)


{
int pom;
pom=*a;
*a=*b;
*b=pom;
}

void main (void)


{
int a[50];
clrscr();

void main(void)
{
int i,j,b[6],x,broj,n,niz;
clrscr();

59.Napisati program koji sortira niz metodom selection sort


#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include "pomocni.h"

cout<<endl<<"Program pretrazuje zadate nizove i nalazi ucitani broj x";


cout<<endl<<"Ucitaj x ";
cin>>x;

cout<<endl<<" Ovaj program sortira niz od 5 elemenata"<<endl;


ucitniz(5,'a',a);
selection_sort(5,a);
stampniz(5,'a',a);

cout<<endl<<"Ucitaj vrednost niza b";


ucitniz(6,'b',b);

cout<<endl<<"Program za sortiranje niza - selection sort";


}

for(i=0;i<n-1;i++)
//niz b mora biti sortiran
for(j=i+1;j<n;j++)
if (x[i]>x[j]) zameni(&x[i],&x[ j]);

60.Napisati program koji pretrauje niz b metodom binarnog pretraivanja


(niz mora biti sortiran).
#include <iostream.h>
#include<conio.h>
#include"pomocni.h"

if (nadjenB(x,6,b)==1)
//binarna pretraga, za sortirani niz
cout<<"Trazeni broj "<<x<< jeste u nizu b <<endl;
else cout<<"Trazeni broj "<<x<< nije u nizu b <<endl;
}

29

Mira Nikoli
61.Napisati program koji sortira niz metodom neposrednog umetanja
#include <stdio.h>
#include <conio.h>
#include "pomocni.h"
void zameni(int *a, int *b)
{
int pom;
pom=*a;
*a=*b;
*b=pom;
}

void zameni(int *a, int *b)


{
int pom;
pom=*a;
*a=*b;
*b=pom;
}
void bubble_sort(int n,int a[])
{
int i,j,provera;
for(i=n-1;i>0;i--)
{
provera=1;
for(j=1;j<=i;j++)
if ((a[j-1]>a[j]))
{
zameni(&a[j-1],& a[ j])
provera=0;
}
if (provera==1) break;
}

void neposredno_umetanje(int n,int x[])


{
int i,j;
for(i=1;i<n;i++)
for(j=i;(j>0)&&x[j-1]>x[j]);j--)
zameni(&x[j],&x[ j-1]);
}
void main (void)
{
int a[50];
clrscr();
cout<<endl<<" Ovaj program sortira niz od 5 elemenata"<<endl;
ucitniz(5,'a',a);

}
void main (void)
{
int a[50];
clrscr();
cout<<endl<<" Ovaj program sortira niz od 5 elemenata"<<endl;
ucitniz(5,'a',a);
bubble_sort(5,a);
stampniz(5,'a',a);

neposredno_umetanje(,5,a);
stampniz(5,'a',a);
cout<<endl<<"Program za sortiranje niza - neposredno umetanje ";
}

cout<<endl<<"Program za sortiranje niza - bubble sort ";


}

62.Napisati program koji sortira niz metodom bubble sort


#include <stdio.h>
#include <conio.h>
#include "pomocni.h"
#include "sort.h"

30

Sledee zadatke uradi za vebu:


Programi za sortiranje nizova svim prethodnim metodama po opadajuem
redosledu.

You might also like