// 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;
}
}
}
}
}
}
#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;
}
}
}
}
}
}