Salve
ho scritto questo codice per individuare la riga max e la min di una matrice e poi invertirle. Non riesco a fare (o visualizzare ?) l'inversione. Ecco il mio codice:
#include <iostream>
using namespace std;
const int righe=4;
const int colonne=4;
void stampaMatrice(int[][colonne],int,int);
int rigaMax(int[][colonne], int, int, int &);
int rigaMin(int[][colonne], int, int, int &);
void invertiRighe(int[][colonne],int,int,int,int);
int main()
{
int valMax=0;
int valMin=0;
int matrice[][colonne]=
{
{1,2,3,4},
{5,6,7,8},
{9,1,2,3},
{4,5,6,7},
};
rigaMax(matrice,righe,colonne,valMax);
stampaMatrice(matrice, righe, colonne);
cout << "La riga di somma massima e' la "<< valMax+1 << " di valore: "
<< rigaMax(matrice,righe,colonne,valMax)<< endl;
cout << "La riga di somma minima e' la "<< valMin+1 << " di valore: "
<< rigaMin(matrice,righe,colonne,valMax)<< endl<<endl;
//valMax+1 rappresenta il numero di riga max
//valMin+1 rappresenta il numero di riga min
invertiRighe(matrice,righe,colonne, valMax, valMin);
cout << "Nuova matrice \n";stampaMatrice(matrice, righe, colonne);
system ("pause");
return 0;
}
void stampaMatrice(int a[][colonne], int r, int c)
{
for (int i=0; i<r; i++)
{
for (int j=0; j<c; j++)
{
cout << " " << a[i][j] << " ";
}
cout << endl;
}
}
int rigaMax(int matr[][colonne],int r,int c,int &valMax)//r=c=4
{
int somma=0;
int tot=0;
for (int i=0; i<r; i++){
for (int j=0; j<c; j++)
{
tot += matr[i][j];
}
if (tot>somma)
{
somma=tot;
valMax=i;
}
tot=0;
}
cout << endl;
return somma;
}
int rigaMin(int matr[][colonne],int r,int c,int &valMin)//r=c=4
{
int somma=1000;
int tot=0;
for (int i=0; i<c; i++){
for (int j=0; j<r; j++)
{
tot += matr[i][j];
}
if (tot<somma)
{
somma=tot;
valMin=i;
}
tot=0;
}
cout << endl;
return somma;
}
void invertiRighe(int matr[][colonne],int r,int c, int rigaMax, int rigaMin)
{
int temp;
for (int j=0; j<c; j++)
{
temp=matr[rigaMin+1][j];
matr[rigaMin+1][j]= matr[rigaMax+1][j];
matr[rigaMax+1][j]=temp ;
}
cout << endl;
}
Grazie