Professional Documents
Culture Documents
Zbirkac Drugi Deo PDF
Zbirkac Drugi Deo PDF
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.
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)
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
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 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 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 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>
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
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 ");
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) {........}
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);
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]; }
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);
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>
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.
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.
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;
} }
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();