Salve a tutti. Devo risolvere il seguente problema: Assegnata una matrice determinare la riga con somma massima e quella con somma minima. Scambiare infine le due righe.
Trovare le righe con somma minima e quella con somma massima non è un problema scambiarle nemmeno ma ristampare la matrice finale non va. Vi allego il codice speranzoso in un aiuto sulla stampa della matrice
#include <iostream>
using namespace std;
void estrai_riga(int a[3][3], int v[],int dimv,int i)
{
int j;
for(j=0;j<3;j++)
{
v[j]=a[i][j];
}
}
// Somma elementi di un array
int somma(int v[],int dimv)
{
int s=0;
for(int i=0;i<dimv;i++)
{
s=s+v[i];
}
return s;
}
// posizione della riga con somma degli elementi massima
int massimo(int a[3][3])
{
int ii=0; int pos;
int v1[3];
estrai_riga(a,v1,3,ii);
int s=somma(v1,3);
int max=s;
pos=ii;
ii++;
while(ii<3)
{
estrai_riga(a,v1,3,ii);
int s1=somma(v1,3);
if(s1>max) {
max=s1;
pos=ii;
ii++;
}
else ii++;
}
return pos;
}
// posizione della riga con somma degli elementi minima
int minimo(int a[3][3])
{
int ii=0; int posi;
int v1[3];
estrai_riga(a,v1,3,ii);
int s=somma(v1,3);
int min=s;
posi=ii;
ii++;
while(ii<3)
{
estrai_riga(a,v1,3,ii);
int s1=somma(v1,3);
if(s1<min) {
min=s1;
posi=ii;
ii++;
}
else ii++;
}
return posi;
}
//scambio vettori
void swap(int a[],int dima,int b[],int dimb)
{
int c[dima];
for(int i=0;i<dima;i++)
{
c[i]=a[i];
}
for(int j=0;j<dimb;j++)
{
a[j]=b[j];
}
for(int k=0;k<dima;k++)
{
b[k]=c[k];
}
}
//scambio matrice
void swap1(int a[3][3])
{
int posizione=massimo(a);
int posizione1=minimo(a);
int v[3];
int v1[3];
estrai_riga(a,v,3,posizione);
estrai_riga(a,v1,3,posizione1);
swap(v,3,v1,3);
}
int main()
{
cout << "MATRICE MASSIMO/MINIMO!" << endl;
cout<<endl;
int m[][3]={{1,2,3},
{4,5,6},
{7,8,9}};
int posizione=massimo(m);
cout<<"la riga con somma massima e' la riga : "<<posizione;
cout<<endl;
cout<<"Mentre :"<<endl;
int posizione1=minimo(m);
cout<<"la riga con somma minima e' la riga : "<<posizione1;
cout<<endl;
swap1(m);
cout<<"La nuova matrice e'"<<endl;
for(int t=0;t<3;t++)
{
cout<<endl;
for(int q=0;q<3;q++)
{
cout<<endl;
cout<<m[t][q];
}
}
return 0;
}