Tuesday, December 10, 2013

#5 Matrice preko pokazivaca

// Napisati program koji unosi,ispisuje kvadratnu matricu preko funkcija i pokazivaca
#include <stdio.h>
#include <conio.h>
#define mN 3
#define mM 3
int sah_tabla[mN][mM];

 void matrica_unos(int mat[][mM],int n,int m);
 

  void matrica_ispis(int mat[][mM],int n,int m);
  void matrica_mesto(int mat[][mM],int n, int m,int x,int y);
 
  void matrica_ispis_glavne_dijagonale(int mat[][mM],int n);
  void matrica_ispis_sporedne_dijagonale(int mat[][mM],int n);
 
  void matrica_ispis_horizontalne_sredine(int mat[][mM],int n,int m);
  void matrica_ispis_vertikalne_sredine(int mat[][mM],int n,int m);
 
  int matrica_min_element(int mat[][mM],int n,int m);
  int matrica_max_element(int mat[][mM],int n,int m);
 
  void matrica_sort_up(int mat[][mM],int n,int m);
  void matrica_sort_down(int mat[][mM],int n,int m);

 main(){
  printf("Unesi cele brojeve  matrice %dx%d\n",mN,mM);

  matrica_unos(sah_tabla,mN,mM);
  printf("\n Ispis matrice \n");
  matrica_ispis(sah_tabla,mN,mM);

  printf("\n Ispis kordinate 2,2 \n");
  matrica_mesto(sah_tabla,mN,mM,2,2);
   printf("\n glavna diajgonala \n");
  matrica_ispis_glavne_dijagonale(sah_tabla,mN);
   printf("\n sporedna dijagonala \n");
  matrica_ispis_sporedne_dijagonale(sah_tabla,mN);
 
   printf("\n vertikalna sredina \n");
  matrica_ispis_vertikalne_sredine(sah_tabla,mN,mM);
   printf("\n horizontalna sredina \n");
  matrica_ispis_horizontalne_sredine(sah_tabla,mN,mM);
  printf("\n Minimalni element matrice %d \n",matrica_min_element(sah_tabla,mN,mM));
  printf("\n Maksimalni element matrice %d \n",matrica_max_element(sah_tabla,mN,mM));
 
  // sortiranje matrice up
   matrica_sort_up(sah_tabla,mN,mM);
   printf("\n Ispis sortirane matrice sort up matrice \n");
  matrica_ispis(sah_tabla,mN,mM);
 
  // sortiranje matrice down
   matrica_sort_down(sah_tabla,mN,mM);
   printf("\n Ispis sortirane matrice sort down matrice \n");
   matrica_ispis(sah_tabla,mN,mM);
 getch();    
 }

 void matrica_unos(int mat[][mM],int n,int m){
   for(int i=0; i<n; i++){
      for(int j=0; j<m; j++){
          printf("Niz[%d][%d]=",i,j); scanf("%d", &mat[i][j]);
      }
   }
 }

  void matrica_ispis(int mat[][mM],int n,int m){
   for(int i=0; i<n; i++){
      for(int j=0; j<m; j++){
          printf("mat[%d][%d]=%d\n",i,j,mat[i][j]);
      }
   }
 }

 void matrica_mesto(int mat[][mM],int n, int m,int x,int y){
     if (x>=0 && x<n && y>=0 && y<m){
        printf("[%d][%d]=%d\n",x,y,mat[x][y]);
     }
     else {
           printf ("Izvan domena x=%d ,y=%d",x,y);
          }
   }
 
   void matrica_ispis_glavne_dijagonale(int mat[][mM],int n){
        for(int i=0; i<n; i++){
          printf("mat[%d][%d]=%d\n",i,i,mat[i][i]);
          }
   }
 
   void matrica_ispis_sporedne_dijagonale(int mat[][mM],int n){
    for(int i=0; i<n; i++){
          printf("mat[%d][%d]=%d\n",i,n-1-i,mat[i][n-1-i]);
          }
   }
   void matrica_ispis_horizontalne_sredine(int mat[][mM],int n,int m){
    for(int i=0; i<m; i++){
          printf("mat[%d][%d]=%d\n",(int)(n/2),i,mat[(int)(n/2)][i]);
          }
   }
    void matrica_ispis_vertikalne_sredine(int mat[][mM],int n,int m){
    for(int i=0; i<n; i++){
          printf("mat[%d][%d]=%d\n",i,(int)(m/2),mat[i][(int)(m/2)]);
          }
   }
 
    int matrica_min_element(int mat[][mM],int n,int m){
        int min=mat[0][0];  
        for(int i=0; i<n; i++){
         for(int j=0; j<m; j++){
                  if(min>mat[i][j]) min=mat[i][j];
         }
        }
         return min;
    }
   
     int matrica_max_element(int mat[][mM],int n,int m){
        int max=mat[0][0];  
        for(int i=0; i<n; i++){
         for(int j=0; j<m; j++){
                  if(max<mat[i][j]) max=mat[i][j];
         }
        }
         return max;
    }
   
    void matrica_sort_up(int mat[][mM],int n,int m){
        //if(min>mat[i][j]) min=mat[i][j];
        for(int i=0; i<n; i++){
         for(int j=0; j<m; j++){
             for(int p=i; p<n; p++){
              for(int q=j; q<m; q++){
                       
                 if ( mat[i][j]>mat[p][q]) {
                      //mat[i][j]=-1;
                      int korpa=mat[i][j];
                     mat[i][j]=mat[p][q];
                      mat[p][q]=korpa;
                      }
              }
              }    
         }
        }
    }
   
    void matrica_sort_down(int mat[][mM],int n,int m){
        //if(min>mat[i][j]) min=mat[i][j];
        for(int i=0; i<n; i++){
         for(int j=0; j<m; j++){
             for(int p=i; p<n; p++){
              for(int q=j; q<m; q++){
                       
                 if ( mat[i][j]<mat[p][q]) {
                      //mat[i][j]=-1;
                      int korpa=mat[i][j];
                     mat[i][j]=mat[p][q];
                      mat[p][q]=korpa;
                      }
              }
              }    
         }
        }
    }

No comments:

Post a Comment