/*
CLAUDIO CARDINALE III AI
Data una matrice, stampare:
1) il valore massimo e il valore minimo fra gli elementi di ciascuna riga;
2) il valore massimo e il valore minimo fra gli elementi di ciascuna colonna;
3) il valore massimo e il valore minimo fra tutti gli elementi
*/
#include<stdio.h>
#define MAX 1000
int main(){
//dichiarazioni
int r,c,j,i,mat[MAX][MAX],posmini=0,posminj=0,posmaxi=0,posmaxj=0,posminr[MAX],posmaxr[MAX],posminc[MAX],posmaxc[MAX];
//acquisizione dati
//lunghezza matrice
do{
printf("inserire r : ");
scanf("%d",&r);
printf("inserire c : ");
scanf("%d",&c);
}while(r<1 || r>=MAX || c<1 || c>=MAX);
//acquisizione dati
for(i=0;i<r;i++)
for(j=0;j<c;j++){
printf("inserire il valore alla riga %d ed alla colonna %d : ",i+1,j+1);
scanf("%d",&mat[i][j]);
}
//calcoli
//1°
for(i=0;i<r;i++){
posminr[i]=0;
posmaxr[i]=0;
for(j=0;j<c;j++)
if(mat[i][j]<mat[i][posminr[i]])
posminr[i]=j;
else if(mat[i][j]>mat[i][posmaxr[i]])
posmaxr[i]=j;
}
//2°
for(j=0;j<c;j++){
posminc[j]=0;
posmaxc[j]=0;
for(i=0;i<r;i++)
if(mat[i][j]<mat[posminc[j]][j])
posminc[j]=i;
else if(mat[i][j]>mat[posmaxc[j]][j])
posmaxc[j]=i;
}
//3°
for(i=0;i<r;i++)
for(j=0;j<c;j++)
if(mat[i][j]<mat[posmini][posminj]){
posmini=i;
posminj=j;
}else if(mat[i][j]>mat[posmaxi][posmaxj]){
posmaxi=i;
posmaxj=j;
}
//visualizzazione risultati
printf("valori massimi e minimi righe :\n");
for(i=0;i<r;i++)
printf("riga %d : max = %d, min = %d\n",i+1,mat[i][posmaxr[i]],mat[i][posminr[i]]);
printf("valori massimi e minimi colonne :\n");
for(i=0;i<c;i++)
printf("colonna %d : max = %d, min = %d\n",i+1,mat[posmaxc[i]][i],mat[posminc[i]][i]);
printf("massimo valore totale : %d, minimo valore totale : %d\n",mat[posmaxi][posmaxj],mat[posmini][posminj]);
}