Professional Documents
Culture Documents
Zbirkac Drugi Deo
Zbirkac Drugi Deo
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;
}
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;
}
}
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;
}
}
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;
}
//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;
}
( a b) 3
cos(c)
c2
a+b
a b
c+d
2
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 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
z=
max( x, y )
1 min( x, y )
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 koji rauna sumu kvadrata parnih, a kubova neparnih brojeva izmedju
min
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 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
Mira Nikoli
FUNKCIJE
clrscr();
cout<<endl<<"Ovaj program racuna vrednost a na n-ti stepen "<<endl;
cout<<"Ucitajte a:";
cin>>a;
cout<<"Ucitajte n:";
cin>>n;
//prototip funkcije
#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();
}
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>
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 ");
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);
}
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;
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);
POKAZIVAI
Pokazivai i funkcije
#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;
C=
( )
n
m
n!
=
m!(n m)!
//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();
}
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;
}
}
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;
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
#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
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";
}
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;
clrscr();
cout<<"Ovaj program za ucitani datum prikazuje sledeci dan"<<endl;
cout<<"godina = "; cin>>g;
cout<<"mesec = "; cin>>m;
cout<<"dan = "; cin>>d;
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
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;
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;
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);
}
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++;
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");
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();
}
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];
long ucitmat();
void stampmat();
clrscr();
printf("\nOvaj program ucitava i sabira dve matrice i stampa ih\n");
22
23
Mira Nikoli
48.Program za unos matrice i sabiranje elemenata na sporednoj dijagonali.
#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
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.
#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
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();
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"
clrscr();
28
void main(void)
{
int i,j,b[6],x,broj,n,niz;
clrscr();
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]);
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 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 ";
}
30