You are on page 1of 30

Mira Nikolić

Sadržaj:
SLIČNOSTI I RAZLIKE C I C++
FUNKCIJE
POKAZIVAČI
Zbirka rešenih NIZOVI

zadataka MATRICE
MODULI
iz PRETRAŽIVANJE I SORTIRANJE
programskog NIZOVA
++
jezika C i C
2. DEO
Mira Nikolić
PROGRAMI U C++ 3. Program koji resava kvadratnu jednacinu za ucitano a,b,c.

1. Upotreba cin,cout #include<iostream.h>


#include<math.h>
#include <iostream.h> void main(void)
void main(void) {
{ float a,b,c,x1,x2,d;
int x = 5,y = 7; cout<<endl<<endl<<"Ovaj program resava kvadratnu jednacinu";
cout << "Unesite prvi broj "; cout<<endl<<"\tax^2+bx+c=0"<<endl;
cin >> x; cout<<"a=";
cout << "Unesite drugi broj "; cin>>a;
cin >> y; cout<<"b=";
cout << endl << "Rezultati su " << endl; cin>>b;
cout << " x+y = " << x+y << endl; cout<<"c=";
cout << " x*y = " << x*y << endl; cin>>c;
}
d=b*b-4*a*c;
2. Program za izračunavanje obima i površine trougla (Heronov obrazac)
#include <iostream.h> if(d>0)
#include <conio.h> {
#include <math.h> x1=(-b-sqrt(d))/(2*a);
#include <iomanip.h> //za postavljanje sirine ispisa i preciznosti x2=(-b+sqrt(d))/(2*a);
//setw(6) sirina broja je 6 cout<<endl<<"Kvadratna jednacina ima realna i
//setprecision(4) decimalnih mesta 4 razlicita resenja:"<<endl;
void main (void) cout<<" x1="<<x1<<" x2="<<x2<<endl;
{ }
float a,b,c,s,o,p; else
clrscr(); if(d==0)
cout<<"Program racuna obim i povrsinu trougla pomocu Heronovog {
obrasca "<<endl; x1=b/(2*a);
cout<<endl<<"Resenja su realna i jednaka:";
cout<<endl<<"Unesite duzine stranica trougla"<<endl; cout<<endl<<"x1=x2= "<<x1<<endl;
cout<<"a="; cin>>a; }
cout<<"b="; cin>>b; else
cout<<"c="; cin>>c; {
s=(a+b+c)/2; x1=-b/(2*a);
p=sqrt(s*(s-a)*(s-b)*(s-c)); x2=sqrt(-d)/(2*a);
o=2*s; cout<<endl<<"Resenja su konjugovano kompleksna:";
cout<<endl<<"x1= "<<x1<<"+i"<<x2;
cout<< setw(6)<< setprecision(4)<<endl<<"Obim je "<<o<<endl; cout<<endl<<"x2= "<<x1<<"-i"<<x2<<endl;
cout<<"Povrsina je "<<p<<endl; }
getch(); }
}
2
Zbirka rešenih zadataka iz C jezika – drugi deo
4. Program koji racuna minimalni i maksimalni od dva ucitana broja a i b 6. Program za odredjivanje Pitagorinih brojeva manjih od 40
korišcenjem kraceg zapisa naredbe if a2+ b2= c2
#include <iostream.h>
#include <iostream.h> #include <math.h>

void main (void) void main(void)


{ {
int a,b,min,max; int a,b,c;
cout<<"Ovaj program odredjuje Pitagorine brojeve a,b<40"<<endl;
cout<<endl<<"Ovaj program racuna min i max od dva ucitana cout<<"\t\ta*a+b*b=c*c"<<endl<<endl;
broja a i b "<<endl; for(a=1;a<=40;a++)
cout<<endl<<"Ucitajte broj a="; for(b=a;b<=40;b++)
cin>>a; {
cout<<endl<<"Ucitajte broj b="; c=sqrt(float(a*a+b*b));
cin>>b; //funkcija sqrt mora imati float ili double argument
if(a*a+b*b==c*c)
(a>b)?(min=b,max=a):(min=a,max=b); cout<<"\t"<<a<<"\t"<<b<<"\t"<<c<<"\t\t"<<endl;
}
cout<<endl<<"max= "<<max<<" min= "<<min<<endl; }
}

5. Program za nalaženje najveceg zajednickog delioca dva nenegativna 7. Program za odredjivanje savršenih brojeva do učitanog m
cela broja ( broj je savršen ako je jednak sumi svojih činilaca 6=1+2+3)

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


void main(void)
void main(void) {
{ int i,n,m,suma;
int prvi, drugi, pomocni; cout<<endl<<"Ovaj program racuna savrsene brojeve od 2 do
cout<<"Ukucajte dva nenegativna cela broja "<<endl; ucitanog m"<<endl;
cin>>prvi>>drugi; cout<<endl<<"Ucitajte m ";
cin>>m;
while(drugi!=0)
{ cout<<endl<<"Savrseni brojevi od 2 do "<<m<<" su"<<endl;
pomocni=prvi%drugi; for(n=2;n<=m;n++)
prvi=drugi; {
drugi=pomocni; suma=1;
} for(i=2;i<=n/2;i++)
cout<<"Najveci zajednicki delilac ovih brojeva je "<<prvi<<endl; if (n%i==0) suma+=i;
} if (suma==n) cout<<n<<"\t";
}
cout<<endl;
}
3
Mira Nikolić
8. Program koji učitava niz, računa zbir i srednju vrednost 10. Program koji učitava niz od 10 kompleksnih brojeva i računa
njihove module (efektivne vrednosti)
#include <iostream.h>
void main(void) #include<iostream.h>
{ #include<math.h>
int i;
float x[10],xsr,s; void main(void)
cout<<"Ucitava se niz, racuna zbir i srednja vrednost" {
<<endl<<endl; int i;
cout<<"Unesite 10 elemenata niza "<<endl<<endl; double Re[10], Im[10], m=0;
for (s=0,i=0;i<10;i++) char predzn='-';
{ cout<<"Program ispisuje 10 kompleksnih brojeva i racuna "<<endl;
cout<<"x["<<i+1<<"]= "; cout<<"\tnjihov moduo (efektivnu vrednost)"<<endl<<endl;
cin>>x[i];
s+=x[i]; for(i=0;i<10;i++)
} {
xsr=s/10; cout<<" Re["<<i+1<<"]=";
cout<<endl<<"Zbir clanova niza je "<<s<<", a prosecna vrednost je " cin>>Re[i];
<<xsr<<endl; cout<<" Im["<<i+1<<"]=";
} cin>>Im[i];
}
9. Program koji ucitava niz i menja predznak elementima sa parnim
indeksom cout<<endl<<"\tKompleksno\t\tEfektivno"<<end; //zaglavlje
#include<iostream.h>
void main(void) for(i=0;i<10;i++)
{ {
int i,n,a[50]; m=sqrt((Re[i]*Re[i])+(Im[i]*Im[i]));
cout<<" Ovaj program za ucitanu duzinu niza"<<endl; if(Im[i]>=0) predzn='+';
cout<<" obrce predznak brojevima sa parnim indeksom"<<endl; else predzn='-';
cout<<endl<<"Ucitaj duzinu niza: ";
cin>>n; coutl<<"\t"<<Re[i]<<predzn<<"j"<<fabs(Im[i])<<"\t\t\t"<<
cout<<endl; m<<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, Sledeće zadatke uradi za vežbu:
a[i]=-a[i]; //a ne ono u programu
} Ulaz-izlaz
for(i=0;i<n;i++)
cout<<endl<<" a["<<i+1<<"]="<<a[i]; ( a − b) 3 c2
cout<<endl; Program za računanje vrednosti izraza −
}
cos(c) a+b

4
Zbirka rešenih zadataka iz C jezika – drugi deo
3
a −b
2
Program koji računa vrednost f(x) za ucitano x.
Program za računanje vrednosti izraza
c+d -2 x<-2
f(x)= x -2<x<2
Program za izračunavanje zbira cifara trocifrenog broja abc 10-2x x>2
Primeti: a= n / 100; b= n / 10 % 10; c= n % 10;
Program koji računa koliki je maksimalni od tri učitana broja a,b,c
Program za izračunavanje otpornosti bakarnog provodnika ako se znaju
dužina i prečnik u mm. Program koji proverava da li je učitani broj abc Armstrongov
# define ROcu 1.588e-8 abc=a3+ b3+ c3
# define PI 3.14 Primeti: a= n / 100; b= n / 10 % 10; c= n % 10;
S=(d/1000)*(d/1000)*PI/4;
R=ROcu*L/S; Program koji računa koliki je zbir cifara broja abc umanjen za max(a,b,c)

Program za izračunavanje kapacitivnosti pločastog kondenzatora ako se zna Za učitani trocifren broj abc nađi najveću i najmanju cifru
površina i rastojanje između obloga u mm.
# define E0 8.854e-12 Program koji računa da li se dati krug može upisati u kvadrat i obrnuto.
c=epsr*E0*s/(d*1000); Učitavaju se površine kvadrata i kruga Pkv i Pkr.
Primeti: Kapacitet kondenzatora je vrlo mala veličina p se mora pisati Pomoć: a=sqrt(Pkv); r=sqrt(Pkr/PI);
eksponencijalno inače ce izgledati da je nula! printf("\n\tC=%e",c) a*sqrt(2)<=2*r Kvadrat stranice moze da se upise u krug
2*r<=a Krug moze da se upise u kvadrat
Program za pretvaranje otpornosti vezanih u zvezdu u otpore vezane u
trougao Program koji ispisuje uspeh za učitanu ocenu korišćenjem naredbe switch-
Rab=Ra+Rb+Ra*Rb/Rc ...... case

switch (ocena)
Program za pretvaranje R vezanih u trougao u otpore vezane u zvezdu
{
Ra=Rac*Rab/(Rac+Rbc+Rab) ......
case 5: printf("odlican");break;
case 4: printf("vrlo dobar");break;
Uslovi case 3: printf("dobar");break;
case 2: printf("dovoljan");break;
Program za izračunavanje apsolutne vrednosti broja bez upotrebe abs default: printf("nekorektna ocena"); /*svi ostali slucajevi*/
}
Program koji računa minimalni i maksimalni od dva učitana broja a i b

Korišćenjem kraćeg zapisa naredbe if Ciklusi


(a>b)?(min=b,max=a):(min=a,max=b);
max( x, y ) Programi koji račnaju S:
napiši program za izračunavanje izraza za učitane x i y: z= 1. S=1+2+3+.......+n
1 − min( x, y ) 2. P=1*2*3*4*......*n=n!
Program koji za učitano x štampa vrednost funkcije 3. S=2+4+6+.......+100
-1, x<0 4. S=21+23+25+.......+99
y= x2-1, 0≤x≤3 5. Proizvod parnih brojeva između m i n
8, x>3 6. Zbir neparnih brojeva između k i n
5
Mira Nikolić
Program za izračunavanje 1+2+3+...+n
Program za odredjivanje trocifrenih Armstrongovih brojeva
Program za izračunavanje faktorijela abc=a3+ b3+ c3
Pomoć: for(m=100;m<=999;m++)
Program za traženje srednje vrednosti n celih pozitivnih brojeva { a=... b=... c=....;
if (m==a*a*a+b*b*b+c*c*c)
Program za izračunavanje m+(m+1)+(m+2)+...+n printf("%d\n",m); }

Program za izračunavanje m*(m+1)*(m+2)+...*n Program za određivanje n-tog Fibonačijevog broja


f1=1, f2=1, fn=fn-2+fn-1
Program za izračunavanje 1-1/2+3-1/4...+n
Pomoć: if(i%2==0) S+=i... Program za nalaženje zbira prvih n Fibonačijevih brojeva

Program koji računa sumu kvadrata parnih, a kubova neparnih brojeva izmedju Program za nalaženje najvećeg zajedničkog delioca dva cela broja
min
Program za odredjivanje trocifrenih prostih brojeva
Program računa zbir kubova parnih, a recipročnih vrednosti kvadrata neparnih
brojeva izmedju m i n Program koji određuje koliko sati se planinar penje na vrh ako svakog sata ide
25 posto sporije
Program koji određuje maksimalnu i minimalnu temperaturu maxT i minT Pomoć: v - polazna visina, h - ciljna visina, a - visina koju savlada
tokom n dana merenja t prvog/tekućeg sata, s – tekuća visina i - broj sati
while(s<h)
Program koji ispisuje tabelu funkcije y=-3x2+2x+1 od tačke a sa korakom dx u { a*=0.75; s+=a; i++; }
n tacaka
Program koji određuje posle koliko godina i će broj riba u jezeru r pasti na
2
Program koji ispisuje tabelu funkcije y=sin(x)+2x u intervalu od a do b u n kritičnu vrednost rkrit ako se godišnje smanjuje za dati procenat p
tacaka Pomoć: while(r>=rkrit)
Pomoć: pre ciklusa for izračunaj priraštaj dx=(b-a)/(n-1); { r*=1-p/100; i++; }

Program računa n puta koren za učitano n 3 + 3 + 3 + ..... 3


Nizovi
2 3 n
Program računa x+x +x +...x za učitano n i x
Program koji sabira elemente niza od 5 celih brojeva
Program računa x+2x2+3x3+...nxn za učitano n i x
S=a1+ a2+ a3+ a4+ a5
Program računa sumu faktorijela 1!+2!+...+n! za učitano n
Pomoć: pamti prethodni član radi bržeg računanja
Program koji računa prosečni element niza od n celih brojeva
Program za odredjivanje srednje vrednosti n celih pozitivnih brojeva a1, a2, a3.... an

Program za permutovanje cifara celog broja Učitaj niz i nađi koliko je elemenata veće od prosečnog

Program koji za učitani niz od 10 celih brojeva nalazi najveći element max
6
Zbirka rešenih zadataka iz C jezika – drugi deo
Program koji za učitani niz od 10 celih brojeva nalazi najmanji element min
Program koji za učitani niz od 10 celih brojeva nalazi najveći element max i Program koji učitava niz a i formira i štampa niz b tako što iz prvog niza
njegovu poziciju maxpoz izbacuje sve neparne elemente

Program koji za učitani niz od 10 celih brojeva nalazi najveći i najmanji element Program za sortiranje nizova realnih brojeva od najmanjeg do najvećeg
max i min i njihove pozicije maxpoz i minpoz (Naredba koja se razlikuje za sortiranje nizova realnih brojeva od najvećeg
do najmanjeg.)
Program koji učitava niz i broji neparne elemente niza
Pomoć: if(a[i]%2==1) br++; Program koji učitava niz a, sortira ga po opadajućem redu, ubacuje u njega
broj 7 na odgovarajuću poziciju i onda ga štampa.
Program koji učitava niz i broji koliko je elemenata niza deljivo sa 3 Pomoć: bolje je ubaciti 7 na kraj niza,pa ga onda sortirati!

Učitaj niz i izbroj parne i negativne elemente niza Odredi iz koliko se različitih cifara sastoji dati prirodni broj
Pomoć: formirati niz c[10] čiji su elementi broj cifara 0,1, 2,...9 u datom broju
Učitaj niz i izbroj neparne elemente niza deljive sa 7

Program koji sabira parne elemente niz sa neparnim indeksima

Program koji računa aritmetičku sredinu pozitivnih elemenata niza

Program koji učitava niz i menja predznak elementima sa parnim indeksom

Program koji učitava 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


odgovarajuće parove a i b za parnoi a množi ih za neparno i
Pomoć: ne moraju se učitavati 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 učitava niz i pronalazi broj elemenata koji prethode prvom
negativnom elementu

Program koji učitava niz i pronalazi proizvod elemenata između prve dve nule
u nizu ako ih ima

Program koji učitava niz a i formira i štampa niz b tako što iz prvog niza
izbacuje sve elemente deljive sa 3
7
Mira Nikolić
FUNKCIJE
double Sk(int m, int n)
{
11.Program koji računa minimalni i maksimalni od četiri ucitana broja a,b,c i double y;
d korišćenjem funkcija min(x,y) i max(x,y) for(y=0;m<=n;m++)
y+=m*m;
return(y);
#include <iostream.h>
}
#include <conio.h>

int min(int x, int y)


{ return (x<y)?x:y; }
13. Program računa n-ti stepen realnog broja a za učitano a i n
int max(int x, int y)
{ return (x>y)?x:y; } #include <iostream.h>
#include <conio.h>
void main (void)
{ void main(void)
int a,b,c,d; {
clrscr(); int n;
cout<<endl<<"Ovaj program racuna min i max od 4 broja "<<endl; double a;
cout<<endl<<"Ucitajte broj a="; cin>>a; double stepen(double a, int n); //prototip funkcije
cout<<endl<<"Ucitajte broj b="; cin>>b;
cout<<endl<<"Ucitajte broj c="; cin>>c; clrscr();
cout<<endl<<"Ucitajte broj d="; cin>>d; cout<<endl<<"Ovaj program racuna vrednost a na n-ti stepen "<<endl;
cout<<"Ucitajte a:";
cout<<endl<<"Najveci broj je "<<max(max(a,b),max(c,d))<<endl; cin>>a;
cout<<endl<<"Najmanji broj je "<<min(min(a,b),min(c,d))<<endl; cout<<"Ucitajte n:";
} cin>>n;

12. Program računa sumu kvadrata brojeva od 3 do 18 umanjenu za sumu cout<<endl<<a<<" na "<<n<<".stepen je "<<stepen(a,n);
kvadrata brojeva od 9 do 10 getch();
}
#include <stdio.h>
#include <conio.h> double stepen(double a, int n)
void main(void) {
{ int i;
double Sk(); double an=1;
clrscr(); for (i=0;i<n;i++)
printf("Ovaj program racuna sumu kvadrata brojeva od 3 do 18\n"); an*=a;
printf("umanjenu za sumu kvadrata brojeva od 9 do 10\n"); return(an);
printf(" Suma=%lf \n",Sk(3,18)-Sk(9,10)); }
}

8
Zbirka rešenih zadataka iz C jezika – drugi deo

14.Program za štampanje svih prostih brojeva do učitanog n b. u jeziku C++

a. u jeziku C #include <iostream.h>


#include <math.h>
#include<stdio.h> #include <conio.h>
#include<conio.h> #include <iomanip.h> //za postavljanje sirine ispisa i preciznosti

void main(void) int prost(int m); //prototip funkcije


{
int n,m; void main(void)
int prost(); {
int n,m;
textbackground(20); clrscr();
textcolor(15); cout<<endl<<"Ovaj program ispisuje proste brojeve od 2 do
clrscr(); ucitanog n"<<endl;
cout<<endl<<"Ucitajte n: ";
printf("\nPROGRAM ISPISUJE PROSTE BROJEVE DO N\n"); cin>>n;
printf("Ucitajte n, n>8 :\n\n\n");
scanf("%d",&n); cout<<endl<<"Prosti brojevi od 2 do "<<n<<" su"<<endl;
cout<<" 1 3 5 7";
printf("Prosti brojevi do %d su:\n",n); for(m=9;m<=n;m+=2)
printf("1\t3\t5\t7\t"); /*stampa prvih prostih brojeva*/ if (prost(m))
cout<<setw(8)<<m;
for(m=9; m<=n; m+=2) /*uzimamo u obzir samo neparne*/ getch();
if (prost(m)) }
{
printf("%d\t",m); int prost(int m)
delay(100); {
} int i=3;
} while ((m%i!=0)&&(i<=m/2))i+=2;
if(i>m/2) return m;
else return 0;
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);
}

9
Mira Nikolić
15.Program koji za učitane 3 tačke štampa obim i površinu trougla koji čine. 16.Program ispisuje tabelu funkcije u intervalu od a do b u 30 tačaka
#include <iostream.h> #include <stdio.h>
#include <conio.h> #include <math.h>
#include <math.h> #include <conio.h>
float dist(float x1, float y1, float x2, float y2) void main(void)
{ return sqrt(pow(x1-x2,2)+pow(y1-y2,2)); } {
int moze_tro(float a, float b, float c) int i;
{ return a<b+c && b<c+a && c<a+b; } double a,b,r,dx=0;
double fun();
float obim(float a, float b, float c) clrscr();
{ return a+b+c; } printf("Ovaj program ispisuje tabelu funkcije u intervalu od a do b u
30 tacaka\n\n");
float povrs(float a, float b, float c) printf("\t 0\t\t\t x<-r \n ");
{ float s=(a+b+c)/2; printf("y \t -sqrt((r*r)-(x*x)) \t 0<x<-r \n ");
return sqrt(s*(s-a)*(s-b)*(s-c)); } printf("\t sqrt(x-r) \t\t x>r \n ");

void main (void) printf("\nUcitajte a=");


{ scanf("%lf",&a);
float x1,x2,x3,y1,y2,y3,a,b,c; printf("Ucitajte b=");
clrscr(); scanf("%lf",&b);
cout<<"Program racuna obim i povrsinu trougla"<<endl; printf("Ucitajte r=");
cout<<"ako su date koordinate 3 temena "<<endl; scanf("%lf",&r);
cout<<endl<<"Unesite koordinate tacke 1:"<<endl; printf("\t\tx\t\ty\n\n");
cin>>x1>>y1; // odjednom i x i y !! dx=(b-a)/29;
cout<<endl<<"Unesite koordinate tacke 2:"<<endl; for(i=0;i<30;i++)
cin>>x2>>y2; printf("\t %8.4lf\t %8.4lf\n",a+(i*dx),fun(r,a+(i*dx)));
cout<<endl<<"Unesite koordinate tacke 3:"<<endl; }
cin>>x3>>y3;
double fun(double r, double x)
a=dist(x1,y1,x2,y2); {
b=dist(x1,y1,x3,y3); double y;
c=dist(x3,y3,x2,y2); if(x<-r) y=0;
else
if (moze_tro(a,b,c)) if(x<0)
{ y=-sqrt((r*r)-(x*x));
cout<<endl<<"Obim je "<<obim(a,b,c); else
cout<<endl<<"Povrsina je "<<povrs(a,b,c)<<endl; if(x<r) y=0;
} else y=sqrt(x-r);
else cout<<endl<<"Ove 3 tacke ne obrazuju trougao"; return(y);
getch(); }
}
10
Zbirka rešenih zadataka iz C jezika – drugi deo
Globalni parametri
void DvaRealna()
17.Napisati program koji računa obim i površinu pravougaonika čije su {
stranice a i b korišćenjem globalnih parametara. Ovaj postupak je x1=(-b-sqrt(d))/(2*a);
koristan da se program podeli na više manjih celina, radi bolje čitljivosti. x2=(-b+sqrt(d))/(2*a);
cout<<endl<<"Kvadratna jednacina ima realna i razlicita
#include <iostream.h> resenja:"<<endl;
cout<<" x1="<<x1<<" x2="<<x2<<endl;
float a, b, O, P; // globalni parametri }
void pravougaonik() // funkcija nema ulazne parametre
{ void KompleksnoKonjugovana()
O=2*(a+b); {
P=a*b; x1=-b/(2*a);
} // funkcija nema return – umesto tipa stoji void x2=sqrt(-d)/(2*a);
// ima vise od jednog rezultata - O, P cout<<endl<<"Resenja su konjugovano kompleksna:";
// prenose se kao globalne promenljive cout<<endl<<"x1= "<<x1<<"+i"<<x2;
cout<<endl<<"x2= "<<x1<<"-i"<<x2<<endl;
void main(void) }
{
cout << "Ovaj program racuna obim i povrsinu pravougaonika "<<endl; void main(void)
cout << "Unesite stranicu a "; {
cin >> a; cout<<endl<<endl<<"Ovaj program resava kvadratnu jednacinu";
cout << "Unesite stranicu b "; cout<<endl<<"\tax^2+bx+c=0"<<endl;
cin >> b; cout<<"a=";
pravougaonik(); //poziv funkcije cin>>a;
cout << endl << "Rezultati su " << endl; cout<<"b=";
cout << " Obim je " <<O<< endl; cin>>b;
cout << " Povrsina je " << P << endl; 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();
#include<iostream.h> else if(d>0) DvaRealna();
#include<math.h> else KompleksnoKonjugovana();
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 21.Napisati program koji ispisuje n-ti član Fibonačijevog niza pri čemu
koristi rekurzivnu funkciju
19.Napisati program koji ispisuje tabelu faktorijela
#include <iostream.h>
#include <iostream.h>
#include <iomanip.h> long fib(int k) {........}

long faktorijel(int n) void main()


{ {
return (n==0) ? 1 : n*faktorijel(n-1); int n, nbroj;
} cout << "Unesi redni broj zeljenog Fibonacijevog broja: ";
cin >> n;
void main(void) cout<<endl<<endl;
{ nbroj = fib(n);
int i,m; cout << nbroj << " je " << n << "-ti Fibonacijev broj\n";
cout<<endl<<"Unesite duzinu tabele faktorijela m<14, m= "; }
cin>>m; 22.Napisati program koji računa novčani iznos kojim raspolaže ulagač
cout<<endl<<"\t\t i\t\t i! "<<endl<<endl; posle n godina ako je godišnja kamata p%godišnje
for(i=1;i<=m;i++)
cout<<"\t\t"<<setw(3)<<i<<setw(16)<<faktorijel(i)<<endl; #include <stdio.h>
} #include <conio.h>
20.Napisati program koji ispisuje n članova Fibonačijevog niza pri čemu double iznos(int n, double p, double s)
koristi rekurzivnu funkciju {
if (n!=0)
#include <iostream.h> return ((1+p/100)*iznos(n-1,p,s));
else return(s);
long fib(int k) }
{
if(k==1||k==2) return 1; void main(void)
else return(fib(k-1)+fib(k-2)); {
} int n;double p,s;
clrscr();
void main(void) printf("\nOvaj program racuna vrednost uloga posle n godina \n");
{ printf("\tuz godisnju kamatu od p%\n\n");
int n,i;
cout<<endl<<"Program za racunanje Fibonacijevog niza,n<35:"<<endl; printf("pocetna suma je dinara "); scanf("%lf",&s);
cout<<"\tn="; printf("godisnja kamata je "); scanf("%lf",&p);
cin>>n; printf("broj godina je "); scanf("%d",&n);
cout<<endl<<endl;
for (i=1;i<=n;i++) printf("\nUstedjevina posle %d godina uz %4.2lf kamate\n",n,p);
cout<<"\tf("<<i<<")= "<<fib(i)<<endl; printf("\tiznosi %8.2lf dinara\n",iznos(n,p,s));
} }
12
Zbirka rešenih zadataka iz C jezika – drugi deo
Sledeće zadatke uradi za vežbu: POKAZIVAČI

Program za računanje vrednosti izraza 52+62+..+.82 - 32 - 22 - 12 Pokazivači i funkcije

Program računa A2+(A+1)2+(A+2)2 - B2 - (B+1)2 - (B+2)2 za učitano A i B 23.Napisati program koji računa obim i površinu pravougaonika čije su
stranice a i b korišćenjem bočnih efekata funkcije obim_povrs
Program za računanje vrednosti izraza 3*4 +4*5+..+.7*8 – 9*10 – 10*11 –
11*12 #include <iostream.h>

Program koji računa sumu faktorijela 1!+2!+...+n! za učitano n void obim_povrs(float a, float b, float *pO, float *pP)
{
Program koji računa x+2x2+3x3+...nxn za učitano n i x *pO=2*(a+b);
*pP=a*b;
Program koji ispisuje tabelu funkcije } // bocni efekti funkcije – ima vise od jednog rezultata
-2 x<-2 // pO, pP - pokazivacki parametri – prenose se pomocu adrese
f(x)= x -2<x<2 void main(void)
10-2x x>2 {
od tačke a sa korakom dx u n tacaka float a,b,O,P;
cout << "Ovaj program racuna obim i povrsinu pravougaonika "<<endl;
Program koji ispisuje tabelu funkcije cout << "Unesite stranicu a ";
-1, x<0 cin >> a;
y= x2-1, 0≤x≤3 cout << "Unesite stranicu b ";
8, x>3 cin >> b;
u intervalu od a do b u n tacaka
obim_povrs(a,b,&O,&P); //poziv funkcije
Program koji ispisuje k-ti prost broj korišćenjem funkcije prost cout << endl << "Rezultati su " << endl;
cout << " Obim je " <<O<< endl;
Program koji računa broj kombinacija m-te klase od n elemenata, korišćenjem cout << " Povrsina je " << P << endl;
funkcije faktorijel }
C= ( )
n
m =
n!
m!(n − m)!
24.Program za izračunavanje obima i površine trougla (Heronov obrazac)

Program za odredjivanje trocifrenih brojeva (ako ih ima )za koje važi: #include <iostream.h>
abc=a!+ b!+ c! #include <conio.h>
#include <math.h>
Programi koji računaju S korišćenjem rekurzivne funkcije:
1. S=1+2+3+.......+n void obim_povrs(float a, float b, float c, float *pO, float *pP)
2. P=1*2*3*4*......*n=n! {
3. S=2+4+6+.......+100 float s;
4. S=21+23+25+.......+99 s=(a+b+c)/2;
*pO=2*s;
*pP=sqrt(s*(s-a)*(s-b)*(s-c));
}
13
Mira Nikolić
void main (void) 26.Napisati program koji računa sumu kvadrata i kubova brojeva od
{ učitanog m do n korišćenjem jedinstvene funkcije kvadrat_kub
float a,b,c,O,P;
clrscr(); #include <stdio.h>
cout<<"Program racuna obim i povrsinu trougla pomocu Heronovog #include <conio.h>
obrasca "<<endl; void main(void)
{
cout<<endl<<"Unesite duzine stranica trougla"<<endl; int m,n;
cout<<"a="; cin>>a; long p,q;
cout<<"b="; cin>>b; void kvadrat_kub();
cout<<"c="; cin>>c; clrscr();
printf("\n\nZa ucitano m i n ovaj program racuna \n");
obim_povrs(a,b,c,&O,&P); //poziv funkcije 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");
cout<<"Obim je "<<O<<endl; printf("m=");
cout<<"Povrsina je "<<P<<endl; scanf("%d",&m);
getch(); printf("n=");
} scanf("%d",&n);
25.Napisati program koji računa minimum i maksimum od dva broja a i b kvadrat_kub(m,n,&p,&q);
korišćenjem jedinstvene funkcije minimax printf("\nOd broja %d do broja %d \n",m,n);
#include <iostream.h> printf("suma kvadrata iznosi p=%ld, a kubova q=%ld \n",p,q);
#include <conio.h> }

void minimax(int a, int b, int *min, int *max) void kvadrat_kub(int m, int n, long *kv, long *kub)
{ {
if (a>b) {*min=b; *max=a;} int i;
else {*min=a; *max=b;} *kv=*kub=0;
} for (i=m;i<=n;i++)
{
void main(void) *kv+=i*i;
{ *kub+=i*i*i;
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
Zbirka rešenih zadataka iz C jezika – drugi deo
Pokazivači i nizovi cout<<endl<<" Uneti 20 clanova niza:"<<endl;
for(px=x;px<x+20;px++)
27.Napisati program koji računa srednju vrednost pozitivnih elemenata niza {
cin>>*px;
#include<iostream.h> xsr+=*px;
#include<conio.h> }
xsr/=20;
void main(void)
{ for(px=x;px<x+20;px++)
int a[100],n,*p,k=0; if (*px>xsr) k++;
float asr=0;
clrscr(); cout<<"Prosecni element u nizu je "<<xsr<<endl;
cout<<"Program ucitava niz od n celih brojeva i racuna "<<endl; cout<<"Natprosecnih je "<<k<<"elemenata";
cout<<"srednju vrednost pozitivnih elemenata niza "<<endl<<endl; getch();
}
cout<<"n="; cin>>n;
29.Napisati program koji od unetog niza realnih brojeva A generiše novi niz
cout<<endl<<"Ucitajte elemente niza."<<endl; B sortiran u rastućem poretku. Realizovati zamenu elemenata niza
cout<<"Unesite ih u jednom redu i razdvojte sa tab "<<endl; korišćenjem pokazivačkih promenljivih. Ispisati nizove A i B.
for(p=a;p<a+n;p++) //primeti: moze se i preterati sa unosom,
{ cin>>*p; //ali program registruje samo n elemenata #include <stdio.h>
if (*p>0)
{ void main(void)
asr+=*p; {
k++; double A[15],B[15];
} int i,j,n;
} void zameni (double *a,double *b);
if (k>0) cout<<"Srednja vrednost pozitivnih je "<<asr/k<<endl;
else cout<<"Nema pozitivnih elemenata "<<endl; printf("\nUnesite duzinu niza : ");
getch(); scanf("%i",&n);
} printf("\nUnesite clanove niza : ");
for (i=0;i<n;i++)
28.Napisati program koji računa koliki je prosečni elemant u nizu i koliko je { scanf("%lf",&A[i]);
elemanata niza iznad proseka B[i]=A[i]; }

#include<iostream.h> for (i=0;i<n-1;i++)


#include<conio.h> for (j=i+1;j<n;j++)
if (B[i]>B[j]) zameni (&B[i],&B[j]);
void main(void)
{ for (i=0;i<n;i++)
int i,x[20],*px,k=0; printf(" A[%d] = %.2lf\t B[%d] = %.2lf\n",i,A[i],i,B[i]);
float xsr=0; }
clrscr();
cout<<"Ovaj program racuna koliko je elemenata miza iznad proseka";
15
Mira Nikolić
void zameni (double *a,double *b) 31.Napisati program koji računa minimum i maks. niza i njihove pozicije
{
double temp; #include <iostream.h>
temp=*a;
*a=*b; void min_max(int x[],int *min,int *rbrmin,int *max,int *rbrmax);
*b=temp;
} void main(void)
{
30.Napisati program koji računa koliki je maksimalni elemant u nizu i koliko int i,n,max,rbrmax,min,rbrmin,x[50];
puta se pojavljuje cout<<"Za ucitani niz x ovaj program nalazi ekstreme "<<endl;;
cout<<"\tminimum i maksimum i njihove pozicije"<<endl;
#include<iostream.h>
#include<conio.h> cout<<endl<<" Unesite 10 elemenata niza X"<<endl;
for(i=0;i<10;i++)
void max(int a[],int n, int *pmax, int *pbrmax) {
{ cout<<"\tx["<<i+1<<"]=";
int i,m=-32768,k=0; cin>>x[i];
for(i=0;i<n;i++) }
if (a[i]>m) //prvi put se pojavljuje ovaj max min_max(x,&min,&rbrmin,&max,&rbrmax);
{ m=a[i]; k=1;} cout<<endl<<"Ekstremi u nizu x su "<<endl;
else if (a[i]==m) k++; //ovaj max se vec javljao cout<<"\tx["<<rbrmax+1<<"]=max="<<max<<endl;
*pmax=m; cout<<"\tx["<<rbrmin+1<<"]=min="<<min<<endl;
*pbrmax=k; }
}
// sledi funkcija
void main(void) void min_max(int x[],int *min,int *rbrmin,int *max,int *rbrmax)
{ {
int i,a[50],n,m,k; int i;
clrscr(); *max=*min=x[0];
cout<<"Ovaj program racuna koliko puta se pojavljuje max u nizu"; *rbrmax=*rbrmin=0;
cout<<endl<<" Uneti duzinu niza:"; for(i=0;i<10;i++)
cin>>n; {
if (x[i]>*max) // nadjen je veci
for(i=0;i<n;i++) { *max=x[i]; *rbrmax=i; }
{ if (x[i]<*min) // nadjen je manji
cout<<"a["<<i+1<<"]="; { *min=x[i]; *rbrmin=i; }
cin>>a[i]; }
} }
max(a,n,&m,&k);

cout<<"Najveci element u nizu je "<<m<<endl;


cout<<"i pojavljuje se "<<k<<" puta";
getch();
}
16
Zbirka rešenih zadataka iz C jezika – drugi deo
32.Programi koji demonstriraju kako se parametri funkcije mogu proslediti void main()
po vrednosti, preko pokazivaca ili referenci (Važi za C++, ne za C!) {
cout<<"\n\n\nPrimer prosledjivanja preko pokazivaca: \n\n";
Prosleđivanje parametara x = 5, y = 10;
po vrednosti cout<<"Glavni. Pre zamene, x: "<<x<<" y: "<<y<<"\n";
#include <iostream.h> zameni(&x,&y);
cout << "Glavni. Posle zamene, x: " << x << " y: " << y << "\n";
void zameni(int x, int y) } // ova dva nacin bice dobri
{ Glavni. Pre zamene, x: 5 y: 10
int temp; F-ja zameni. Pre zamene, x: 5 y: 10
cout<<"F-ja zameni. Pre zamene, x: "<<x<<" y: "<<y <"\n"; F-ja zameni. Posle zamene, x: 10 y: 5
temp = x; Glavni. Posle zamene, x: 10 y: 5
x = y;
y = temp; preko referenci
cout << "F-ja zameni. Posle zamene, x: "<<x<<" y: "<<y<<"\n"; #include <iostream.h>
}
void zameni(int &x, int &y)
void main() { // ovaj nacin je najjednostavniji za pisanje
{ int temp;
cout << "\n\n\nPrimer prosledjivanja po vrednosti: \n\n"; cout<<"F-ja zameni. Pre zamene, x: "<<x<<" y: " <<y<< "\n";
int x = 5, y = 10; temp = x;
cout<<"Glavni. Pre zamene, x: "<<x<<" y: "<<y<<"\n"; x = y;
zameni(x,y); y = temp;
cout<<"Glavni. Posle zamene, x: "<<x<<" y: "<<y<< "\n"; cout<<"F-ja zameni. 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 void main()
F-ja zameni. Pre zamene, x: 5 y: 10 {
F-ja zameni. Posle zamene, x: 10 y: 5 cout << "\n\n\nPrimer prosledjivanja preko referenci: \n\n";
Glavni. Posle zamene, x: 5 y: 10 x = 5, y = 10;
cout << "Glavni. Pre zamene, x: " << x << " y: " << y << "\n";
preko pokazivača zameni(x,y);
#include <iostream.h> cout << "Glavni. Posle zamene, x: " << x << " y: " << y << "\n";
void zameni(int *px, int *py) }
{ Glavni. Pre zamene, x: 5 y: 10
int temp; F-ja zameni. Pre zamene, x: 5 y: 10
cout<<"F-ja zameni. Pre zamene, x: "<< *px<<" y: "<<*py<< "\n"; F-ja zameni. Posle zamene, x: 10 y: 5
temp = *px; Glavni. Posle zamene, x: 10 y: 5
*px = *py;
*py = temp;
cout<<"F-ja zameni. Posle zamene, x: "<<*px<<" y: "<<*py<<"\n";
}

17
Mira Nikolić
33.Program koji demonstrira kako se parametri funkcije mogu proslediti int broj_dana(int g)
preko referenci (Važi za C++, ne za C!) Ovaj program raspoređuje { return 365+prestupna(g);}
testerasto četiri učitana broja a<b>c<d
int broj_dana_m(int m, int g)
#include <iostream.h> { int s;
#include <conio.h> switch(m)
{case 1: case 3: case 5: case 7: case 8: case 10: case12: s=31;
void razmeni(int &a, int &b) break;
{ case 4: case 6: case 9: case 11: s=30; break;
int t; case 2:s=28+prestupna(g); break;
t=a; a=b; b=t; }
} return s;
}
void main()
{ int a,b,c,d; void sledeci(int *d, int *m, int *g)
{
clrscr(); int maxd;
cout<<"Ovaj program rasporedjuje testerasto cetiri broja maxd=broj_dana_m(*m,*g);
a<b>c<d"<<endl; (*d)++;
cout<<"a= "; cin>>a; if (*d>maxd) //taj dan je na kraju meseca, prelaz na sledeci mesec
cout<<"b= "; cin>>b; { *d=1; (*m)++;
cout<<"c= "; cin>>c; if (*m>12) //decembar, prelaz na sledecu godinu
cout<<"d= "; cin>>d; { *m=1; (*g)++; }
}
if (a>b) razmeni(a,b); }
if (b<c) razmeni(b,c);
if (c>d) razmeni(c,d); void main(void)
{ int g,m,d;
cout<<"Posle zamene, raspored brojeva je: "<<endl;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl; clrscr();
getch(); 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 učitani datum pokazuje koji je datum sledećeg dana. sledeci(&d,&m,&g);
Parametri se prenose preko pokazivača, a koristi se nekoliko funkcija
cout<<"Sledeceg dana datum je: "<<endl;
#include <iostream.h> cout<<d<<". "<<m<<". "<<g<<". "<<endl;
#include <conio.h> getch();
}
int prestupna(int g)
{ return (g%100!=0 && g%4==0 || g%400==0);}

18
Zbirka rešenih zadataka iz C jezika – drugi deo
35.Program koji za učitani datum pokazuje koji je datum posle n dana. Sledeće zadatke uradi za vežbu:
Parametri se prenose preko pokazivača, a koristi se iste funkcije kao u
prethodnom zadatku Program koji računa obim i površinu trapeza čije su osnove a i b, a visina h
korišćenjem bočnih efekata funkcije obim_povrs
#include <iostream.h>
#include <conio.h> Program koji računa zbir i razliku brojeva a i b korišćenjem jedinstvene funkcije
zbir_razlika
int prestupna(int g)
{ ... } Program koji raspoređuje testerasto četiri učitana broja a>b<c>d
int broj_dana(int g) Program koji računa srednju vrednost parnih elemenata niza
{ ... }
Program koji računa koliki je prosečni elemant u nizu i koliko je elemanata niza
int broj_dana_m(int m, int g) ispod proseka
{ ....... }
Program koji računa koliki je minimalni elemant u nizu i koliko puta se
void sledeci(int *d, int *m, int *g) pojavljuje
{ .... }
Program koji od unetog niza realnih brojeva A generiše novi niz B sortiran u
void N_dana_kasnije(int n, int *d, int *m, int *g) opadajućem poretku. Realizovati zamenu elemenata niza korišćenjem
{ while (n--) sledeci (d,m,g); } pokazivačkih promenljivih. Ispisati nizove A i B.
void main(void) Napisati program koji računa minimum i maks. niza i njihove pozicije
{ int g,m,d,n;
Funkcija koja vraća datum prethodnog dana
clrscr(); void prethodni(int *d, int *m, int *g)
cout<<"Ovaj program za ucitani datum prikazuje datum n dana
kasnije"<<endl; Program koji koristi prethodne funkcije i koji za dva datuma d1,m1,g1 i
cout<<"godina = "; cin>>g; d2,m2,g2 određuje broj dana između ta dva datuma
cout<<"mesec = "; cin>>m;
cout<<"dan = "; cin>>d;
cout<<"Koliko dana kasnije? n = "; cin>>n;

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) 38.Program za odredjivanje broja elemenata niza pre prve nule

#include<iostream.h>
36.Program koji učitava niz i broji neparne elemente niza #include<conio.h>

#include<stdio.h> void main (void)


#include<conio.h> {
int i, a[16];
void main (void) clrscr();
{ cout<<endl<<"Program broji elemente niza pre prve nule"<<endl;
int i, a[6],br;
clrscr(); for(i=0;i<16;i++)
printf("\nProgram broji neparne elemente niza\n"); {
for(i=0,br=0;i<6;i++) cout<<"a["<<i+1<<"]=";
{ cin>>a[i];
printf("\t a[%d]=",i+1); }
scanf(" %d",&a[i]); i=0;
if(a[i]%2==1) br++; while(i<16 && a[i]!=0) i++;
} cout<<endl<<"Broj elemenata niza pre prve nule je "<<i<<endl;
printf("\nUkupan broj neparnih brojeva je\tbr=%d",br); getch();
} }

39.Program za odredjivanje broja elemenata niza posle prve nule


37.Program koji učitava niz i broji koliko je elemenata niza deljivo sa 3 #include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<conio.h> void main (void)
{
void main(void) int i, n, a[50];
{ clrscr();
int n,i,br=0,a[50]; printf("\nProgram broji elemente niza posle prve nule\n");
clrscr(); printf("\nDuzina niza je "); scanf(" %d",&n);
cout<<endl<<"Unesi broj elemenata niza ";
cin>>n; for(i=0;i<n;i++)
for(i=0;i<n;i++) {
{ printf("\t a[%d]=",i+1);
cout<<"a["<<i+1<<"]="; scanf(" %d",&a[i]);
cin>>a[i]; }
if(a[i]%3==0) br+=1; i=0;
} while(i<n && a[i]!=0) i++;
cout<<endl<<"U ovom nizu ima "<<br<<" elemenata deljivih sa 3"<<endl;
getch(); printf("\nBroj elemenata niza posle prve nule je %d",n-1-i);
} }

20
Zbirka rešenih zadataka iz C jezika – drugi deo
40.Program za sabiranje elemenata niza izmedju prve dve nule (ili od nule printf("\n\nUcitajte duzinu nizova b i c ");
do kraja ako je samo jedna nula); scanf("%d",&n);
printf("\n\nUcitaj niz a koji je dugacak %d elemenata \n",2*n);
#include<iostream.h> for(i=0;i<2*n;i++)
#include<conio.h> {
printf("\ta[%d]=",i+1);
void main (void) scanf("%d",&a[i]);
{ }
int i, n, s=0;
static int a[13]={ 1,0, 2, 3, 4,1,5, 2,4, 4,1, 0, 3 }; printf("\n\nElementi nizova b i c su:\n ");
for(i=0;i<n;i++)
clrscr(); {
cout<<endl<<"Program sabira elemente niza izmedju prve dve nule"<<endl; b[i]=a[2*i+1];
c[i]=a[2*(n-i-1)];
for(i=0;i<13;i++) printf("\tb[%d]=%d\tc[%d]=%d\n",i+1,b[i],i+1,c[i]);
{ }
cout<<"a["<<i+1<<"]="; }
cin>>a[i];
}
i=0; 42.Program koji učitava niz i pronalazi maksimalan element i njegovu
while(i<13 && a[i]!=0) poziciju
i++; /*prolaz kroz niz do prve nule*/
i++; #include<stdio.h>
while(i<13 && a[i]!=0) /*sabiranje od prve do druge nule*/ #include<conio.h>
{ s+=a[i];
i++; } void main (void)
cout<<endl<<"Suma elemenata niza izmedju prve dve nule je "<<s<<endl; {
getch(); int n,i,max,maxpoz=0,x[30];
} clrscr();
printf("\n\t Program odredjuje maksimalan element niza:");
41.Program koji učitava niz a duzine 2n, pa od njega formira dva niza, b i c, printf("\n Broj elemenata celobrojnog niza X je:");
duzine n, tako da elementi b budu 2,4,,6..., 2n-ti element a, a elementi c scanf("%d",&n);
pretposlednji (2n-1), 2n-3..., 1. element a printf("\n Unesite niz X:\n\n");
for(i=0;i<n;i++)
#include<stdio.h> scanf("%d",&x[i]);
#include<conio.h> max=x[0]; /*pretpostavka da je prvi najveci*/
for(i=0;i<n;i++)
void main(void) if (x[i]>max)
{ { max=x[i]; /*nadjen je veci*/
int n,i,a[100],b[50],c[50]; maxpoz=i; }
clrscr(); printf("\n\n\t%d. element niza je maksimalan \n",maxpoz+1);
printf("\t Xmax=%d \n",max);
printf("\n\nProgram pravi nizove b i c od niza a"); }

21
Mira Nikolić
43.Program za sortiranje niza realnih brojeva od najmanjeg do najvećeg MATRICE
#include<iostream.h> 44.Program za unos matrice i računanje prosečnog elementa.
#include<conio.h>
void main(void) #include <iostream.h>
{ #include <conio.h>
int n,i,j; void main(void)
float priv, x[100]; {
clrscr(); int i,j;
cout<<endl<<"Duzina niza n="; cin>>n; float x[4][4], xsr,s;
for(i=0;i<n;++i) //Ucitavanje n brojeva
{ clrscr();
cout<<" x["<<i+1<<"]="; cout<<"Ucitava se matrica, racuna zbir i srednja vrednost"<<endl;
cin>>x[i]; cout<<"Unesite elemente matrice "<<endl<<endl;
} for (s=0,i=0;i<4;i++)
for(j=0;j<n-1;++j) //Sortiranje for (j=0;j<4;j++)
for(i=j+1;i<n;++i) {
if(x[i]>x[j]) cout<<"x["<<i+1<<","<<j+1<<"]= ";
{ cin>>x[i][j];
priv=x[j]; s+=x[i][j];
x[j]=x[i]; }
x[i]=priv; xsr=s/16;
}
//Stampanje sortiranih brojeva cout<<endl<<"Zbir elemenata matrice "<<s<<endl;
cout<<endl<<"Sortirani brojevi:"<<endl; cout<<"a prosecna vrednost je " <<xsr<<endl;
for(i=0;i<n;++i) getch();
cout<<endl<<"x["<<i+1<<"]="<<x[i]; }
getch();
} 45.Program za sabiranje matrica koji koristi funkcije.

#include<stdio.h>
Sledeće zadatke uradi za vežbu: #include<conio.h>
Program koji učitava niz a i formira i štampa niz b tako što iz prvog niza
izbacuje sve elemente deljive sa 3 void main (void)
{
Program za sabiranje elemenata niza pre prvog neparnog elementa int i,j,a[10][10],b[10][10],c[10][10];

Program koji učitava niz od 10 kompleksnih brojeva i računa njihove module long ucitmat(); /* ova funkcija ucitava matricu*/
(efektivne vrednosti) void stampmat(); /* ova funkcija stampa matricu*/

Program koji za poznate nizove a i b formira niz c tako što sabira/množi clrscr();
odgovarajuće parove a i b printf("\nOvaj program ucitava i sabira dve matrice i stampa ih\n");
c[i]=a[i]+b[i], ako je i parno, c[i]=a[i]*b[i], ako je i neparno

22
Zbirka rešenih zadataka iz C jezika – drugi deo
printf("\n\n Unesite vrednosti prve matrice:\n\n"); void main(void)
ucitmat(2,3,'a',a); {
printf("Unesite vrednosti druge matrice:\n\n"); int i,j;
ucitmat(2,3,'b',b); int x[4][3], s;
clrscr();
printf("\n Matrica A ima elemente:\n"); cout<<"Ucitava se matrica i racuna zbir elemenata
stampmat(2,3,'a',a); iznad glavne dijagonale";
printf("\n Matrica B ima elemente:\n"); cout<<endl<<"Unesite elemente matrice "<<endl<<endl;
stampmat(2,3,'b',b); for (s=0,i=0;i<4;i++,cout<<endl)
for (j=0;j<3;j++)
for(i=1;i<=2;i++) /*izracunavanje elemenata c*/ {
for(j=1;j<=3;j++) cout<<"x["<<i+1<<","<<j+1<<"]= ";
c[i][j]=a[i][j]+b[i][j]; cin>>x[i][j];
printf("\n Matrica C=A+B ima elemente:\n"); if (i<j)
stampmat(2,3,'c',c); s+=x[i][j];
getch(); }
} cout<<endl<<"Zbir elemenata iznad glavne dijagonale je "<<s<<endl;
long ucitmat(int m,int n, char ime, int x[][10]) getch();
{ }
int i,j,a[10][10];
for(i=1;i<=m;i++,printf("\n")) 47.Program za unos matrice i množenje elemenata na glavnoj dijagonali.
for(j=1;j<=n;j++)
{ #include <iostream.h>
printf("%c[%d,%d]= ",ime,i,j); #include <conio.h>
scanf("%d",&x[i][j]); void main(void)
} {
return (x[m][n]); int i,j;
} int x[3][4], p;
clrscr();
void stampmat(int m,int n, char ime, int x[][10]) cout<<"Ucitava se matrica i racuna proizvod na glavnoj dijagonali";
{
int i,j; cout<<endl<<"Unesite elemenate matrice "<<endl<<endl;
printf("\n"); for (p=1,i=0;i<3;i++,cout<<endl)
for(i=1;i<=m;i++, printf("\n")) for (j=0;j<4;j++)
for(j=1;j<=n;j++) {
printf("%c[%d,%d]=%d\t",ime,i,j,x[i][j]); cout<<"x["<<i+1<<","<<j+1<<"]= ";
} cin>>x[i][j];
if (i==j)
p*=x[i][j];
46.Program za unos matrice i sabiranje elemenata iznad glavne dijagonale. }
cout<<endl<<"Proizvod elemenata na glavnoj dijagonali je "<<p<<endl;
#include <iostream.h> getch();
#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)
#include <iostream.h> for(j=0;j<n;j++)
#include <conio.h> cout<<" M["<<i+1<<","<< j+1<<"]= "<<M[i][j];
void main(void) cout<<endl<<"Transponovana matrica N je"<<endl;
{ for(i=0;i<n;i++,cout<<endl)
int i,j; for(j=0;j<m;j++)
int x[4][4], s; cout<<" N["<<i+1<<","<< j+1<<"]= "<<N[i][j];
clrscr(); getch();
cout<<"Ucitava se matrica i racuna zbir na sporednoj dijagonali"<<endl; }
cout<<"Unesite elemente matrice "<<endl<<endl; 50.Program za računanje srednjih vrednosti vrsta poznate matrice
for (s=0,i=0;i<4;i++,cout<<endl)
for (j=0;j<4;j++) #include<stdio.h>
{ #include<conio.h>
cout<<"x["<<i+1<<","<<j+1<<"]= ";
cin>>x[i][j]; void main (void)
if (i+j==3) {
s+=x[i][j]; static float a[3][4]={ {1.0, 2.0, 3.0, 4.0},
} {1.5, 2.4, 3.3, 4.2},
cout<<endl<<"Zbir elemenata na sporednoj dijagonali je "<<s<<endl; {1.1, 0.2, 3.3, 0.4} };
getch(); int i,j;
} float sredina(float x[],int n);
clrscr();
49.Napisati program u kojem se unosi matrica celih brojeva M, a zatim se printf("\nOvaj program racuna srednju vrednost vrste matrice\n\n");
štampa transponovana matrica N[i,j]=M[j,i]. Prikazati matrice M i N. printf("Elementi matrice a su:\n\n");
for(i=0;i<3;i++, printf("\n"))
#include <iostream.h> for(j=0;j<4;j++)
#include <conio.h> printf("%.2f\t",a[i][j]);
void main(void) for(i=0;i<3;i++, printf("\n"))
{ printf("Srednja vrednost %d. vrste je %f\n",i+1,sredina(a[i],4));
int i,j,M[15][15],N[15][15],m,n; getch();
clrscr(); }
cout<<endl<<"Unesite dimenzije matrice m,n za M[mxn] "<<endl;
cout<<"m= "; cin>>m; float sredina(float x[],int n)
cout<<"n= "; cin>>n; {
for(i=0;i<m;i++) int i;
for(j=0;j<n;j++) float suma=0;
{ cout<<"M["<<i+1<<","<< j+1<<"]= "; for(i=0;i<n;i++)
cin>>M[i][j]; suma+=x[i];
N[j][i]=M[i][j]; } return suma/n;
}
24
Zbirka rešenih zadataka iz C jezika – drugi deo
51.Napisati program koji od unetog niza A (maksimalne dužine 15 for(i=0;i<3;i++)
elemenata) generiše kvadratnu matricu M čiji su elementi reda vrednosti for(j=0;j<5;j++, printf("\n");)
iz niza A pomnoženi brojem reda. Ispisati matricu u tabelarnom formatu. printf("%10f",m[i][j]);
printf("\n k=\n");
#include <iostream.h> scanf("%f",&k);
#include <conio.h> for(i=0;i<3;i++)
for(j=0;j<5;j++)
void main() m[i][j]*=k;
{ printf("\n Matrica posle skalarnog mnozenja:\n");
double A[15],M[15][15]; for(i=0;i<3;i++)
int i,j,n; {
clrscr(); for(j=0;j<5;j++)
cout<<endl<<"Unesite dimenziju niza : "; cin>>n; printf("%10f\t", m[i][j]);
cout<<endl<<"Unesite clanove niza : "; printf("\n");
for (i=0;i<n;i++) }
cin>>A[i]; getch();
for (i=0;i<n;i++) }
for (j=0;j<n;j++)
M[i][j]=A[j]*(i+1); 53.Napisati program za množenje matrica C=AxB
clrscr();
cout<<endl<<"Matrica M ima sledece elemente"<<endl; #include<iostream.h>
#include<conio.h>
for (i=0;i<n;i++,cout<<endl)
for (j=0;j<n;j++) void main(void)
cout<<" M["<<i<<","<<j<<"]="<<M[i][j]; { /*inicijalizacija matrica A i B*/
getch(); static int A[2][3]={ {1,2,4},
} {11,22,33}, };
static int B[3][4]={ {1,2,3,4},
52.Program za skalarno množenje matrica, m=k*m (svaki element matrice {11,22,33,44},
množi se skalarom k) {10,20,30,40}, };
int i,j,k;
#include<stdio.h> int C[2][4];
#include <conio.h> clrscr();
cout<<endl<<"Ovaj program mnozi matrice i stampa C=AxB"<<endl;
void main() for(i=0;i<2;i++,cout<<endl)
{ for(j=0;j<4;j++)
int i,j; {
float k; for(C[i][j]=0,k=0;k<3;k++)
static float m[3][5]={ {7.0, 16.8, 5.1, 3.1, 2.9}, C[i][j]+=A[i][k]*B[k][j];
{1.0, 1.9, 2.9, 0.0, 7.7}, cout<<" C["<<i+1<<","<<j+1<<"]="<<C[i][j];
{-2.2, 1.1, 2.2, 4.4, 9.9} }; }
clrscr(); getch();
printf("Originalna m:\n"); }
25
Mira Nikolić
54.Napisati program za unos matrice M[3x4], a zatim sortirati kolone Sledeće zadatke uradi za vežbu:
matrice u rastućem poretku po vrednosti zbira elemenata kolona.

#include <stdio.h> Program za unos matrice i računanje maksimalnog elementa.


#include <conio.h>
Funkcije za kvadratnu matricu koje određuju
void zameni (int &A, int &B) - sumu pozitivnih elemenata
{ int temp=A; A=B; B=temp; } - minimalni element na sporednoj dijagonali
- sumu elemenata ispod glavne dijagonale
void main(void)
{ - sumu elemenata iznad sporedne dijagonale
int i,j,k,M[3][4],suma[4]={0,0,0,0};
clrscr(); Program za unos matrice i množenje elemenata ispod glavne dijagonale.
printf("Unesite elemente matrice M\n");
Program za unos matrice i množenje elemenata na sporednoj dijagonali.
for (i=0;i<3;i++)
for (j=0;j<4;j++) Program za unos matrice i sabiranje elemenata ispod sporedne dijagonale.
{
printf("M[%i][%i] =",i+1,j+1); Program za oduzimanje matrica koji koristi funkcije.
scanf ("%i",&M[i][j]);
suma[j]+=M[i][j]; Funkcija razmena koja zamenjuje elemente m-t i n-te
} - vrste
for (i=0;i<3;i++) - kolone
for (j=i+1;j<4;j++)
if (suma[j]<suma[i]) Program za računanje srednjih vrednosti kolona poznate matrice
{
zameni(suma[j],suma[i]); Program za unos matrice M[3x4], a zatim sortirati vrste matrice u opadajućem
for (k=0;k<3;k++) poretku po vrednosti zbira elemenata vrsta.
zameni (M[k][j],M[k][i]);
} Program dnevnik sa matricom učenika i ocenama po predmetima koji računa
printf("\nSortirana matrica M je\n",M[i][j]); proseke učenika i proseke po predmetima.
for (i=0;i<3;i++,printf ("\n"))
for (j=0;j<4;j++)
printf("%i\t",M[i][j]);
getch();
}

26
Zbirka rešenih zadataka iz C jezika – drugi deo
MODULI
void stampmat(int m,int n, char ime, int x[][10])
{
55.Napisati modul pomocni.h koji sadrži funkcije za učitavanje i ispis niza int i,j;
i matrice cout<<endl;
for(i=0;i<m;i++, cout<<endl )
#include<iostream.h> for(j=0;j<n;j++)
#include<conio.h> cout<<ime<<"["<< i+1<<“,“<<j+1<<"]= "<<x[i][j];
}
long ucitniz(); /* ova funkcija ucitava niz*/
void stampniz(); /* ova funkcija stampa niz*/
long ucitmat(); /* ova funkcija ucitava matricu*/ 56.Napisati program sa prethodinim modulom koji učitava dva niza A i B, od
void stampmat(); /* ova funkcija stampa matricu*/ po 6 elemenata, pa ih sabira dajući elemente niza C, a onda štampa sva
3 niza.
long ucitniz(int m, char ime, int x[])
{ #include<iostream.h>
int i; #include<conio.h>
for(i=0;i<m;i++) #include"pomocni.h" /*obrati paznju: pisu se navodnici ", ne <>!*/
{ void main (void)
cout<<ime<<"["<< i+1"]= "; {
cin>>x[i]; int i,j,a[10],b[10],c[10];
} clrscr();
return (x[m]);
} cout<<endl<<"Ovaj program ucitava i sabira dva niza i stampa ih";
cout<<endl<<"Unesite vrednosti prvog niza:"<<endl;
void stampniz(int m, char ime, int x[100]) ucitniz(6,'a',a);
{ cout<<endl<<"Unesite vrednosti drugog niza:"<<endl;
int i; ucitniz(6,'b',b);
for(i=1;i<=m;i++)
cout<<ime<<"["<< i+1"]= "<<x[i]; clrscr();
} cout<<endl<<"Niz A ima elemente:"<<endl;
stampniz(6,'a',a);
long ucitmat(int m,int n, char ime, int x[][10]) cout<<endl<<"Niz B ima elemente:"<<endl;
{ stampniz(6,'b',b);
int i,j;
for(i=0;i<m;i++,cout<<endl) for(i=0;i<=6;i++) /*izracunavanje elemenata c*/
for(j=0;j<n;j++) c[i]=a[i]+b[i];
{ cout<<endl<<"Niz C=A+B ima elemente:"<<endl;
cout<<ime<<"["<< i+1<<“,“<<j+1<<"]= "; stampniz(6,'c',c);
cin>>x[i][j];
} }
return (x[m][n]);
}
27
Mira Nikolić
PRETRAŽIVANJE I SORTIRANJE NIZOVA - MODULI
57.Napisati program sa prethodnim modulom koji učitava dve matrice A i B,
od 2x3 elemenata, pa ih sabira dajući elemente matrice C, a onda
štampa sve 3 matrice. 58.Napisati program koji pretražuje niz a metodom sekvencijalnog
pretraživanja.

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


#include<conio.h> #include<conio.h>
#include"pomocni.h" /*obrati paznju: pisu se navodnici ", ne <>!*/ #include"pomocni.h"

void main (void) int nadjenS(int broj, int n, int niz[])


{ {
int i,j,a[10][10],b[10][10],c[10][10]; int i;
for(i=0;i<n;i++)
clrscr(); if(niz[i]==broj) return 1;
return 0;
cout<<endl<<"Ovaj program ucitava i sabira dve matrice i stampa ih"; }
cout<<endl<<"Unesite vrednosti prve matrice:" <<endl;
ucitmat(2,3,'a',a); void main(void)
cout<<endl<<"Unesite vrednosti druge matrice:" <<endl; {
ucitmat(2,3,'b',b); int a[10],x;
clrscr();
clrscr();
cout<<endl<<"Program pretrazuje zadati niz i nalazi ucitani broj x";
cout<<endl<<"Matrica A ima elemente:"<<endl; cout<<endl<<"Ucitaj x ";
stampmat(2,3,'a',a); cin>>x;
cout<<endl<<"Matrica B ima elemente:"<<endl;
stampmat(2,3,'b',b); cout<<endl<<""\nUcitaj vrednost niza a\n");
ucitniz(10,'a',a);
for(i=1;i<=2;i++) /*izracunavanje elemenata c*/
for(j=1;j<=3;j++) if (nadjenS(x,10,a)==1) //sekvencijalna pretraga
c[i][j]=a[i][j]+b[i][j]; cout<<"Trazeni broj "<<x<<“ jeste u nizu a“<<endl;
cout<<endl<<"Matrica C=A+B ima elemente:"<<endl; else cout<<"Trazeni broj "<<x<<“ nije u nizu a“ <<endl;
stampmat(2,3,'c',c); }

28
Zbirka rešenih zadataka iz C jezika – drugi deo
59.Napisati program koji sortira niz metodom selection sort int nadjenB(int broj,int n,int niz[ ])
{
#include <iostream.h> int sredina,donja=0,gornja=n-1,nasao=0;
#include <stdio.h> while(donja<=gornja && !nasao)
#include <conio.h> {
#include "pomocni.h" sredina=(donja+gornja)/2;
if(broj==niz[sredina]) nasao=1;
void zameni(int *a, int *b) else
{ if (broj<niz[sredina]) gornja=sredina-1;
int pom; else donja=sredina+1;
pom=*a; }
*a=*b; if(!nasao)return 0;
*b=pom; else return 1;
} }

void selection_sort(int n,int x[]) void zameni(int *a, int *b)


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

void main (void) void main(void)


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

cout<<endl<<" Ovaj program sortira niz od 5 elemenata"<<endl; cout<<endl<<"Program pretrazuje zadate nizove i nalazi ucitani broj x";
ucitniz(5,'a',a); cout<<endl<<"Ucitaj x ";
selection_sort(5,a); cin>>x;
stampniz(5,'a',a);
cout<<endl<<"Ucitaj vrednost niza b";
cout<<endl<<"Program za sortiranje niza - selection sort"; ucitniz(6,'b',b);
}
for(i=0;i<n-1;i++) //niz b mora biti sortiran
for(j=i+1;j<n;j++)
60.Napisati program koji pretražuje niz b metodom binarnog pretraživanja if (x[i]>x[j]) zameni(&x[i],&x[ j]);
(niz mora biti sortiran).
if (nadjenB(x,6,b)==1) //binarna pretraga, za sortirani niz
#include <iostream.h> cout<<"Trazeni broj "<<x<<“ jeste u nizu b“ <<endl;
#include<conio.h> else cout<<"Trazeni broj "<<x<<“ nije u nizu b“ <<endl;
#include"pomocni.h" }
29
Mira Nikolić
61.Napisati program koji sortira niz metodom neposrednog umetanja void zameni(int *a, int *b)
{
#include <stdio.h> int pom;
#include <conio.h> pom=*a;
#include "pomocni.h" *a=*b;
*b=pom;
void zameni(int *a, int *b) }
{
int pom; void bubble_sort(int n,int a[])
pom=*a; {
*a=*b; int i,j,provera;
*b=pom;
} for(i=n-1;i>0;i--)
{
void neposredno_umetanje(int n,int x[]) provera=1;
{ for(j=1;j<=i;j++)
int i,j; if ((a[j-1]>a[j]))
for(i=1;i<n;i++) {
for(j=i;(j>0)&&x[j-1]>x[j]);j--) zameni(&a[j-1],& a[ j])
zameni(&x[j],&x[ j-1]); provera=0;
} }
if (provera==1) break;
void main (void) }
{ }
int a[50];
clrscr(); void main (void)
{
cout<<endl<<" Ovaj program sortira niz od 5 elemenata"<<endl; int a[50];
ucitniz(5,'a',a); clrscr();

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


neposredno_umetanje(,5,a); ucitniz(5,'a',a);
stampniz(5,'a',a); bubble_sort(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


Sledeće zadatke uradi za vežbu:
#include <stdio.h>
#include <conio.h>
#include "pomocni.h" Programi za sortiranje nizova svim prethodnim metodama po opadajućem
#include "sort.h" redosledu.
30

You might also like