L'idea è quella di scambiare i valori massimi con quelli minimi di una matrice. Il programma funziona, ma volevo trovare un modo carino per rappresentare la matrice alla fine con i valori scambiati.
Questo è il codice:
#include<iostream>
#include<stdlib.h>
using namespace std;
int mat[100][100]; //dichiarazione matrice
int maxr[100]; //vettore per posizione delle righe (minimo)
int minr[100]; //vettore per posizione delle colonne (minimo)
int maxc[100]; //vettore per posizione delle righe (massimo)
int minc[100]; //vettore per posizione delle colonne (massimo)
int i; //indice righe della matrice
int j; //indice colonne della matrice
int a; //indice vettore per posizione delle righe (minimo)
int b; //indice vettore per posizione delle colonne (minimo)
int c; //indice vettore per posizione delle righe (massimo)
int d; //indice vettore per posizione delle colonne (massimo)
int minimo; //valore minimo
int massimo=0; //valore massimo
int n; //numero righe della matrice
int m; //numero colonne della matrice
int e; //variabile usata per confrontare il minimo e massimo con ogni casella della matrice
int contmin=0; //contatore numeri minimi
int contmax=0; //contatore numeri massimi
int main()
{
cout<<"Inserisci il numero delle righe della matrice"<<endl;
cin>>n;
cout<<"Inserisci il numero delle colonne "<<endl;
cin>>m;
for (i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cout<<"Inserisci l'elemento di posizione "<<i<<"-"<<j<<endl;
cin>>mat[j];
if(i==0 && j==0)
{
minimo=mat[j];
}
else if (minimo>mat[j])
{
minimo=mat[j];
}
if(massimo<mat[j])
{
massimo=mat[j];
}
}
}
i=0;
j=0;
a=0;
b=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(minimo==mat[j])
{
minr[a]=i;
minc=j;
a++;
b++;
contmin++;
}
}
}
c=0;
d=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(massimo==mat[j])
{
maxr[c]=i;
maxc[d]=j;
c++;
d++;
contmax++;
}
}
}
i=0;
j=0;
a=0;
b=0;
for(e=0;e<contmin;e++)
{
i=minr[a];
j=minc;
mat[j]=massimo;
a++;
b++;
}
c=0;
d=0;
for(e=0;e<contmax;e++)
{
i=maxr[c];
j=maxc[d];
mat[j]=minimo;
c++;
d++;
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cout<<mat[i][j]<<"---"<<endl;
}
}
system("pause");
return 0;
}