You are on page 1of 10

VEBA BR 6.

MATRICE 1. Za matricu a inicijalizovanu pri deklaraciji izraunati srednju vrednost vrsta pomou funkcije srvr (fja iz nizova). 2. Napisati fju koja za matricu 4*4 rauna sumu elemenata ispod glavne dijagonale. 3. Napisati program kojim se vrste matrice ureuju u monotono neopadajuem poretku. Koristiti funkcije za uitavanje i ispis matrice i funkciju za sortiranje nizova. 4. Zakljune ocene uenika jednog odeljenja date su matricom A n*m, n<=50, m<=15, tako de je a[i][j] ocena i-tog uenika iz predmeta j. Napisati program kojim se unose ocene uenika, zatim se za svakog uenika ispisuje prosena ocena i za svaki predmet prosena ocena odeljenja. 5. Data je matrica realnih brojeva A n*n, n<=100. Napisati funkciju koja u matrici A odredjuje: a) sumu pozitivnih elemenata b) maksimalni element c) minimalni element na sporednoj dijagonali d) sumu elemenata ispod glavne dijagonale e) sumu elemenata iznad sporedne dijagonale 6. Napisati funkciju kojom se proverava da li je matrica celih brojeva A n*n, n<=100 osno simetrina u odnosu na: a) horizontalnu osu simetrije b) vertikalnu osu simetrije c) sporednu dijagonalu 7. Napisati funkciju kojom se proverava da li je matrica celih brojeva A n*n, n<=100 centralno simetrina u odnosu na centar matrice. 8. Data je matrica celih brojeva A n*n, n<=100. Napisati funkciju koja odredjuje maksimalne elemente na paralelama glavne dijagonale: a) u donjem trouglu ukljuujui i glavnu dijagonalu b) u celoj matrici 9. Data je matrica celih brojeva A n*n, n<=100. Napisati program za formiranje niza d (0, ,n-1), gde je d[0] suma elemenata na glavnoj dijagonali, d[1] suma elemenata na prvoj dijagonalinoj paraleli donjeg trougla matrice, d[2] suma elemenata na drugoj dijagonalinoj paraleli donjeg trougla matrice, itd. 10. Napisati fju po imenu razmena kojom se razmenjuju elementi m-te i n-te a) vrste b) kolone matrice A 10*10 11. Napisati funkcije kojim se na osnovu date matrice A celih brojeva n*n formira niz b(0,n-1) iji su elementi redom jednaki: a) sumi elemenata u vrstama matrice A b) proizvodu elemenata vrsta c) najmanjim vrednostima u vrstama matrice A d) razlici najveih i najmanjih vrednosti u vrsti 12. Napisati program kojim se u matrici celih brojeva A n*n razmenjuju vrsta koja sadri element najvee vrednosti i vrsta koja sadri element najmanje vrednosti. 13. ahovska tabla je predstavljena znakovnom matricom 8*8. Ako su dati prirodni brojevi n I m kao broj horizontale I vertikale koji oznaavaju poloaj kraljice, odgovarajui element oznaiti sa k, polja koja napada kraljica sa * a ostala polja sa0. Ispisati takvu matricu. 14. Ako je data celobrojna kvadratna matrica A n*n, odrediti indekse vrsta a) iji elementi obrazuju neopadajui niz. b) iji elementi obrazuju simetrine nizove

palindrome. Uvesti funkcije ija je vrednost 1 ako su ova svojstva zadovoljena, u protivnom 0. 15. Matricom reda n data je tabela jesenjeg dela fudbalskog ampionata, iji su elementi a[i][j] jednaki 0 ako je ekipa i izgubila od ekipe j, 1 nereeno, 2 ako je ekipa i pobedila ekipu j. Napisati program kojim se izraunava a) broj ekipa koje su imale vie pobeda nego poraza b) broj ekipa koje su prole bez poraza. Sadraj na glavnoj dijagonali zanemariti. 16. Napisati program kojim se na osnovu niza a(0....n-1) formira matrica B iji su elementi nulte vrste jednaki elementima datog niza, a i-ta vrsta se dobija ciklikim premetanjem prethodne za jedno mesto u levo. 17. Data je celobrojna matrica A n*m. Element matrice se naziva sedlo ako je istovremeno najmanji u svojoj vrsti i najvei u svojoj koloni. Formirati matricu C n*m gde je c[i][j] 1 akoje a[i][j] sedlo I 0 ako a[i][j] nije sedlo 18. Na prijemu je n osoba (manje od 100). Data je matrica A n*n tako da je a[i][j]=1 ako osoba I poznaje osobu j, inae je a[i][j] =0. Napisati funkciju koja odreuje redni broj osobe a) koja poznaje najvie osoba b) koju poznaje najvie osoba.

REENJA VEBE BR 6.
MATRICE 1. Za matricu a inicijalizovanu pri deklaraciji izraunati srednju vrednost vrsta pomou funkcije srvr (fja iz nizova). #include<stdio.h> float srvr(float x[], int n) { int i=0; float suma=0,sredvred; while(i<n) { suma=suma+x[i]; i=i+1; } sredvred=suma/n; return sredvred; } void main() { static float a[3][4]={ {1.0 , 2.0 , 3.0 , 4.0}, {11.5 , 21.5 , 33.5 , 44.5}, {10.1 , 20.2 , 30.3 , 40.4 } }; float as; int i=0; while (i<3) {

as=srvr(a[i],4); printf(sred.vred. %d vrste je %f\n,i,as); } } PRIKAZ: Sred.vred.0 vrste je 2.5 Sred.vred.1 vrste je 28 Sred.vred.2 vrste je 25.25 2. Napisati fju koja za matricu 4*4 rauna sumu elemenata ispod glavne dijagonale X00 X01 X02 X03 X10 X11 X12 X13 X20 X21 X22 X23 X30 X31 X32 X33 Za indekse svih elemenata ispod glavne dijagonale vai i>j #include<stdio.h> float donjitrougao(float x[][4], int n) { int i=0,j; float suma=0; while(i<n) { j=0; while(j<i) { suma=suma+x[i][j]; j=j+1; } i=i+1; } return suma; } void main() { static float a[4][4]={ {1.0 , 2.0 , 3.0 , 4.0}, {11.5 , 22.5 , 33.5 , 44.5}, {10.1 , 20.2 , 30.3 , 40.4 }, {10.2 , 20.3 , 30.4 , 40.5 } }; float zbir; zbir=donjitrougao(a,4); printf(zbir je %f\n,zbir); }

PRIKAZ:

Zbir je 102,7

3. Napisati program kojim se vrste matrice ureuju u monotono neopadajuem poretku. Koristiti funkcije za uitavanje i ispis matrice i funkciju za sortiranje nizova. #include<stdio.h> void ucitajm(int a[][10],int n) { int i,j; i=0; while(i<n) { j=0; while (j<n) { printf(a[%d][%d]=,i,j); scanf(d,&a[i][j]); j=j+1; } i=i+1; } } void pisim(int a[][10],int n) { int i,j; i=0; while(i<n) { j=0; while (j<n) { printf(%2d,a[i][j]); j=j+1; } printf(\n); i=i+1; } } void razmeni(int *x,int *y) { int pom; pom=*x; *x=*y; *y=pom; } void sort1(int a[], int n)

{ int i,j; i=0; while (i<n) { j=i+1; while(j<n) { if (a[i]>a[j]) razmeni(&a[i],&a[j]); j=j+1; } i=i+1; } } void main() { int a[10][10]; int i=0,n; printf(unesi broj vrsta matrice\n); scanf(%d,&n); printf(unesi elemente matrice po vrstama\n); ucitajm(a,n); printf(matrica pre sortiranja\n); pisim(a,n); while (i<n) { sort1(a[i],n); i=i+1; } printf(matrica posle sortiranja\n); pisim(a,n); } 4. Zakljune ocene uenika jednog odeljenja date su matricom A n*m, n<=50, m<=15, tako de je a[i][j] ocena i-tog uenika iz predmeta j. Napisati program kojim se unose ocene uenika, zatim se za svakog uenika ispisuje prosena ocena i za svaki predmet prosena ocena odeljenja. Primer za probu programa: br. vrsta (broj ucenika) m=4, br. kolona (broj predmeta) n=5 Predme t0 1 5 Predmet 1 2 4 Predmet 2 3 3 Predmet 3 4 2 Predme t4 5 4 zbpoime nu 15 18 prosekpoime nu 15/5=3 18/5=3.6

Ime0 Ime1

Ime2 Ime3 zbpopred prospopr ed

2 1 9 9/4=2.2 5

3 4 13 13/4=3. 25

2 3 11 11/4=2. 75

5 4 15 15/4=3. 75

4 5 18 18/4=4. 5

16 17

16/5=3.2 17/5=3.4

#include<stdio.h> void ucitajm(int a[][15],int m, int n) { int i,j; i=0; while(i<m) { j=0; while (j<n) { printf(a[%d][%d]=,i,j); scanf(%d,&a[i][j]); j=j+1; } i=i+1; } } void pisi(float s[],int x) /*za stampanje niza proseka*/ { int i=0; while (i<x) { printf(%f,,s[i]); i=i+1; } } void pisiint(int s[],int x) /*za stampanje niza proseka*/ { int i=0; while (i<x) { printf(%d,,s[i]); i=i+1; } } void prosek(int a[],float pros[],int brvrsta,int brkol) { int i=0; while(i<brvrsta)

{ pros[i]=(float)a[i]/brkol; i=i+1; } } void main() { int a[50][15],m,n,i,j; static int ime[50],predmet[15]; static float imepros[50],predmetpros[15]; printf(unesi m i n\n); scanf(%d%d,&m,&n); ucitajm(a,m,n); i=0; while(i<m) { j=0; while(j<n) { ime[i]=ime[i]+a[i][j]; predmet[j]=predmet[j]+a[i][j]; j=j+1; } i=i+1; } pisiint(ime,m); printf(\n); pisiint(predmet,n); printf(\n); prosek(ime,imepros,m,n); prosek(predmet,predmetpros,n,m); pisi(imepros,m); printf(\n); pisi(predmetpros,n); printf(\n); } Prikaz: Unesi m i n 4 5 * * * 15,18,16,17, 9,13,11,15,18, 3.00 3.60 3.20

2.20

3.40

2.25

3.25

2.75

3.75

4.50

5. Data je matrica realnih brojeva A n*n, n<=100. Napisati funkciju koja u matrici A odredjuje: a) sumu pozitivnih elemenata Probni primer: 2.5 -3.5 -2.5 1.5 1.5 -3 -4 -3 1.5 Suma je 7.00 #include<stdio.h> void ucitajm(float a[][100], int n) { int i,j; i=0; while(i<n) { j=0; while (j<n) { printf(a[%d][%d]=,i,j); scanf(%f,&a[i][j]); j=j+1; } i=i+1; } } float suma(float a[][100], int n) { float s=0; int j,i=0; while(i<n) { j=0; while(j<n) { if(a[i][j]>=0) s=s+a[i][j]; j=j+1; } i=i+1; } return s; }

void main() { float a[100][100]; float zbir; int n; printf(unesi n\n); scanf(%d,&n); ucitajm(a,n); zbir=suma(a,n); printf(Suma je %f\n,zbir); } b) maksimalni element

c) minimalni element na sporednoj dijagonali d) sumu elemenata ispod glavne dijagonale e) sumu elemenata iznad sporedne dijagonale