You are on page 1of 8

DVODIMENZIONALNI NIZOVI – MATRICE 

 
1. Uneti matricu celih brojeva dimenzija nxn (kvadratna) i ispisati matricu čiji je svaki element uvećan 2 puta. 
#include <stdio.h> 
#include <stdlib.h> 
int main() 

    int i,j,n,a[10][10]; 
    printf("Unesite broj vrsta(kolona) matrice: (n<=10)"); 
    scanf("%d",&n); 
    //UNOS ELEMENATA MATRICE 
    for(i=0;i<n;i++) 
      { 
        for(j=0;j<n;j++) 
         { 
           printf("a[%d][%d]=",i,j); 
           scanf("%d",&a[i][j]); 
         } 
         printf("\n"); 
        } 
    //ISPIS UVECANE MATRICE 
    for(i=0;i<n;i++) 
      { 
        for(j=0;j<n;j++) 
           printf("a[%d][%d]=%d  ",i,j,2*a[i][j]); 
           printf("\n"); 
        } 
    return 0; 

 
2.Napisati program za formiranje jedinične matrice a(nxn) za n<=10. Jedinična matrica je matrica koja na glavnoj dijagonali 
ima samo  jedinice, a svi ostali elementi su nule, i ima isti broj vrsta i kolona‐kvadratna matrica. 
#include <stdio.h> 
#include <stdlib.h> 
int main() 

    int i,j,n; 
    //OBVEZNO DEFINISATI STATIC INT, ZBOG NULA MATRICE 
    static int a[10][10]; 
    printf("Unesite broj vrsta(kolona) matrice: (n<=10)"); 
    scanf("%d",&n); 
    for (i=0;i<n;i++) 
        a[i][i]=1; 
    //ISPIS JEDINIČNE MATRICE 
    for(i=0;i<n;i++) 
      { 
        for(j=0;j<n;j++) 
           printf("%d  ",a[i][j]); 
           printf("\n"); 
        } 
    return 0; 

 


 
ILI da sami formiramo nule matrice  
#include <stdio.h> 
#include <stdlib.h> 
int main() 

    int i,j,n; 
    //BEZ STATIC INT 
     int a[10][10]; 
    printf("Unesite broj vrsta(kolona) matrice: (n<=10)"); 
    scanf("%d",&n); 
    for (i=0;i<n;i++) 
        for(j=0;j<n;j++) 
           if (i==j) a[i][j]=1; 
               else  a[i][j]=0; 
    //ISPIS JEDINIČNE MATRICE 
    for(i=0;i<n;i++) 
      { 
        for(j=0;j<n;j++) 
           printf("%d  ",a[i][j]); 
           printf("\n"); 
        } 
    return 0; 

3. Napistati funkciju za unos matrice i funkciju za ispis matrice (kvadratne n<=10) . Testirati u programu. 
#include <stdio.h> 
#include <stdlib.h> 
void Unos(int a[][10],int n) 
{ int i,j; 
 for(i=0;i<n;i++) 
      { 
        for(j=0;j<n;j++) 
         { 
           printf("a[%d][%d]=",i,j); 
           scanf("%d",&a[i][j]); 
         } 
         printf("\n"); 
        } 

void Ispis(int a[][10],int n) 
{ int i,j; 
  for(i=0;i<n;i++) 
      { 
        for(j=0;j<n;j++) 
           printf("%3d  ",a[i][j]); 
           printf("\n"); 
        } 

int main() 
{ int n,a[10][10]; 
    printf("Unesite broj vrsta(kolona) matrice: (n<=10)"); 
    scanf("%d",&n); 
    Unos(a,n); 
    Ispis(a,n); 
    return 0;} 


 
4. Unosi se matrica realnih brojeva A( nxn), n<=100. Napisati funkciju koja u matrici A određuje: 
a) sumu pozitivnih elemenata matrice;   
b) sumu elemenata ispod glavne dijagonale;  
c) sumu elemenata iznad sporedne dijagonale;   3 4 5
d) maksimalni element matrice;  
e) sumu elemenata glavne dijagonale;   1 2 3
f) minimalni element na sporednoj dijagonali;  
#include<stdio.h>  8 5 1
#include <stdlib.h> 
void citaj(float a[][100],int n) 

  int i,j; 
  printf("Uneti elemente matrice \n"); 
  for(i=0;i<n;i++) 
                   { 
                      for(j=0;j<n;j++) 
          scanf("%f",&a[i][j]); 
                     printf("\n"); 
                } 

//a) f‐ja za sumu pozitivnih elemenata matrice;   SumaPoz 
float SumaPoz(float a[][100],int n) 
{   float s=0; 
  int i,j; 
  for(i=0;i<n;i++) 
    for(j=0;j<n;j++) 
      if(a[i][j]>0) s+= a[i][j]; 
    return s; 

//b) f‐ja za sumu elemenata ispod glavne dijagonale; IspodGD 
float IspodGD(float a[][100],int n) 
{   float s=0; 
  int i,j; 
  for(i=1;i<n;i++) 
    for(j=0;j<i;j++) 
      s+= a[i][j]; 
    return s;} 
// c) f‐ja za sumu elemenata iznad sporedne dijagonale; IznadSD 
float IznadSD(float a[][100],int n) 
{   float s=0; 
  int i,j; 
  for(i=0;i<n‐1;i++) 
    for(j=0;j<n‐1‐i;j++) 
      s+= a[i][j]; 
    return s; 

// d)f‐ja za maksimalni element matrice; 
float MaxElement(float a[][100],int n) 
{   float m=a[0][0]; 
  int i,j; 
  for(i=0;i<n;i++) 
    for(j=0;j<n;j++) 
      if(a[i][j]>m) m= a[i][j]; 
    return m;} 


 
 
//e) f‐ja za sumu elemenata glavne dijagonale; SumaGD 
float SumaGD(float a[][100],int n) 
{   float s=0; 
  int i; 
  for(i=0;i<n;i++) 
         s+= a[i][i]; 
    return s;} 
//f)  minimalni element na sporednoj dijagonali; 
float MinSD(float a[][100],int n) 
{   float m=a[0][n‐1]; 
  int i; 
  for(i=1;i<n;i++) 
      if(a[i][n‐1‐i]<m) m= a[i][n‐1‐i]; 
    return m; 

int main() 

float a[100][100]; 
int n; 
printf("Unesite dimenziju matrice: "); 
scanf("%d",&n); 
citaj(a,n); 
printf("\n Zbir elemenata matrice S=%5.2f",SumaPoz(a,n)); 
printf("\n Zbir elemenata ispod glavne dijagonale S=%5.2f",IspodGD(a,n)); 
printf("\n Zbir elemenata iznad sporedne dijagonale S=%5.2f",IznadSD(a,n)); 
printf("\n Najveci element matrice je m=%.2f",MaxElement(a,n)); 
printf("\n Zbir elemenata glavne dijagonale S=%5.2f",SumaGD(a,n)); 
printf("\n Najmanji element sporedne dijagonale je m=%.2f",MinSD(a,n)); 
return 0; 

5. Napisati funkciju kojom se razmenjuju elementi k‐te i q –te: 
a) vrste; 
b) kolone; 
Testirati u programu. 
 #include<stdio.h>  npr. za uneto k=2 i q=4 razmena vrste(reda) 
#include <stdlib.h>  dobiće se  
void Unos(int a[][10],int n)  1 1 1 1                       1 1 1 1 
{ int i,j;  2 3 4 2                       4 4 4 4 
 for(i=0;i<n;i++)  3 3 3 3                       3 3 3 3 
      {  4 4 4 4                        2 3 4 2 
        for(j=0;j<n;j++) 
         { 
           printf("a[%d][%d]=",i,j); 
           scanf("%d",&a[i][j]); 
         } 
         printf("\n"); 
        } 

void Ispis(int a[][10],int n) 
{ int i,j; 
  for(i=0;i<n;i++) 
      { 
        for(j=0;j<n;j++) 

 
           printf("%3d  ",a[i][j]); 
           printf("\n");  void RazmenaKolone(int a[][10],int n,int k,int q) 
        }  { int i,pom; 
}      for(i=0;i<n;i++) 
void RazmenaVrste(int a[][10],int n,int k,int q)        { 
{ int j,pom;          pom=a[i][k‐1]; 
    for(j=0;j<n;j++)          a[i][ k‐1]=a[i][ q‐1]; 
      {          a[i][ q‐1]=pom; 
        pom=a[k‐1][j];        } 
        a[k‐1][j]=a[q‐1][j];   
        a[q‐1][j]=pom;  } 
      } 

int main() 
npr. za uneto k=2 i q=4 razmena kolone 
{ int n,k,q,a[10][10]; 
dobiće se  
    printf("Unesite broj vrsta(kolona) matrice: (n<=10)"); 
1 1 1 1                       1 1 1 1 
    scanf("%d",&n);                                                                                 
2 3 4 2                       2 2 4 3 
    printf("Unesite koje vrste hocete da zamenite: "); 
3 1 3 3                       3 3 3 1 
    scanf("%d%d",&k,&q); 
4 0 4 4                       4 4 4 0 
    Unos(a,n); 
    RazmenaVrste(a,n,k,q); 
    Ispis(a,n); 
    return 0; 

 
Moze i ovako: 
void Razmeni(int *a,int *b) 
{ int pom; 
 pom=*a; 
 *a=*b; 
 *b=pom; 

void RazmenaKolone(int a[][10],int n,int k,int q) 
{ int i; 
    for(i=0;i<n;i++) 
      Razmeni(&a[i][k‐1],&a[i][q‐1]); 

6. Napisati program koji u kvadratnoj matrici (n<=10)  sa jednom funkcijom koja računa sumu svih elemenata matrice, 
minimalni, maksimalni element kao i srednju vrednost elemenata na glavnoj dijagonali. (funkcije koje vraćaju više vrednosti) 
 
#include<stdio.h> 
#include <stdlib.h> 
 
void citaj(int a[][10],int n) 

  int i,j; 
  printf("Uneti elemente matrice \n"); 
  for(i=0;i<n;i++) 
      { 
        for(j=0;j<n;j++) 
      scanf("%d",&a[i][j]); 
      printf("\n"); 
      } 


 
 
void pisi(int a[][10],int n) 

  int i,j; 
  for(i=0;i<n;i++) 
    { 
    for(j=0;j<n;j++) 
      printf("%d ",a[i][j]); 
    printf("\n"); 
  } 

 
 
void sve(int a[][10],int n, int *s,int *mini,int *maxi,float *sr) 

  int i,j; 
  *s = 0; 
  *mini = a[0][0]; 
  *maxi = a[0][0]; 
  *sr =0; 
  for(i=0;i<n;i++) 
    for(j=0;j<n;j++) 
            { 
      *s+=a[i][j]; 
      if(a[i][j]<*mini) 
        *mini = a[i][j]; 
      if(a[i][j]>*maxi) 
        *maxi = a[i][j]; 
      if(i==j) *sr += a[i][j]; 
 
       } 
    *sr/=n; 
  } 
 
int main() 

int a[10][10], n, s,mini,maxi; 
float sr; 
printf("Unesite dimenziju matrice: "); 
scanf("%d",&n); 
citaj(a,n); 
pisi(a,n); 
sve(a,n, &s, &mini, &maxi, &sr); 
printf("\nS=%d, min=%d, max=%d, sr=%.2f",s,mini,maxi,sr); 
return 0; 

 
 
 
 
 
 
 
 


 
7. Zaključne ocene učenika jednog odeljenja date su matricom A(nxm),učenici  n<=50, predmeti m<=15.  
a[i][j] jeocena i‐tog učenika iz predmeta j.Napisati program kojim se unose zaključne ocene za svakog učenika, a zatim se za 
svakog učenika ispisuje prosečna ocena i za svaki predmet prosečna ocena tog predmeta u odeljenju. 
#include<stdio.h> 
#include <stdlib.h> 
void Unos(int a[][15],int n,int m) 
{ int i,j;  2 4 4 2 
 for(i=0;i<n;i++)  3 5 3 5 
      {  2 2 2 2 
       for(j=0;j<m;j++) 
           scanf("%d",&a[i][j]); 
       printf("\n"); 
        } 

int main() 
{ int n,m,i,j,a[50][15]; 
  float su,sp; 
    printf("Unesite broj ucenika(n<=50): "); 
    scanf("%d",&n); 
    printf("Unesite broj predmeta(m<=15): "); 
    scanf("%d",&m); 
    Unos(a,n,m); 
    printf("\n PROSECI PO UCENICIMA\n"); 
    for(i=0;i<n;i++) 
     { 
         su=0; 
         for(j=0;j<m;j++) 
            su+=a[i][j]; 
         su=su/m; 
         printf("%d. ucenik ima prosek %5.2f\n",i+1,su); 
     } 
    printf("\n PROSECI PREDMETIMA\n"); 
    for(j=0;j<m;j++) 
     { 
         sp=0; 
         for(i=0;i<n;i++) 
            sp+=a[i][j]; 
         sp=sp/n;  Ako ima jedinica da ne računa prosek 
         printf("%d. predmet prosek %5.2f\n",j+1,sp);  for(i=0;i<n;i++) 
     }       { 
    return 0;           su=0; 
    }           for(j=0;j<m;j++) 
              if(a[i][j]==1) 
                 { su=1; 
                  goto naredba; 
                 } 
               else su+=a[i][j]; 
              su=su/m; 
           naredba:printf("%d. ucenik ima prosek %5.2f\n",i+1,su); 
       } 
 
 
 
 


 
Isti zadatak, samo sto se prosečne ocne učenika smeštaju u niz Uc, a prosečne ocene predmeta u niz Pr. 
#include<stdio.h> 
#include <stdlib.h> 
 
void Unos(int a[][15],int n,int m) 
{ int i,j; 
 for(i=0;i<n;i++) 
      { 
       for(j=0;j<m;j++) 
           scanf("%d",&a[i][j]); 
       printf("\n"); 
        } 

int main() 
{ int n,m,i,j,a[50][15]; 
  float su,sp,Uc[50],Pr[15]; 
    printf("Unesite broj ucenika(n<=50): "); 
    scanf("%d",&n); 
    printf("Unesite broj predmeta(m<=15): "); 
    scanf("%d",&m); 
    Unos(a,n,m); 
    printf("\n PROSECI PO UCENICIMA\n"); 
    for(i=0;i<n;i++) 
     { 
         su=0; 
         for(j=0;j<m;j++) 
            if(a[i][j]==1) 
               { su=1; 
                goto naredba; 
               } 
             else su+=a[i][j]; 
            su=su/m; 
         naredba:Uc[i]=su; 
     } 
     for(i=0;i<n;i++) 
        printf("\n %5.2f",Uc[i]); 
    printf("\n PROSECI PREDMETIMA\n"); 
    for(j=0;j<m;j++) 
     { 
         sp=0; 
         for(i=0;i<n;i++) 
            sp+=a[i][j]; 
         sp=sp/n; 
         Pr[j]=sp; 
     } 
     for(j=0;j<m;j++) 
        printf("\n %5.2f",Pr[j]); 
    return 0; 
    } 
 
 
 
 
 


 

You might also like