MATRICE SWAP

di il
9 risposte

MATRICE SWAP

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

9 Risposte

  • Re: MATRICE SWAP

    Sai cos'è il debug? 99% dei vostri problemi si risolvono facendo il debug del programma. Ogni IDE ha un debugger incorporato, impara a usarlo.
  • Re: MATRICE SWAP

    
    swap(int v[3][3], int max, in min)
    {
       int temp;
       int i;
       for(i = 0; i <3; i++)
       {
            temp = v[max][i];
            v[max][i] = v[min][i];
            v[min][i] = temp;
       }
    } 
    
    Basta questo per fare lo scambio dei dati tra righe.
  • Re: MATRICE SWAP

    Non sono pratico col debug in che modo avrei potuto usarlo?
  • Re: MATRICE SWAP

    Qual'è il tuo IDE? Che programma usi per scrivere i listati?
  • Re: MATRICE SWAP

    Scusa se rispondo con giorni di ritardo... comunque io utilizzo "codeblocks"
  • Re: MATRICE SWAP

    Menu Debug. Pulsante Start (F8). Poi tutti i pulsanti del menu debug servono per far andare il tuo programma in slow-motion, cioè un istruzione per volta. Con Debug->Debugging Windows->Watches puoi vedere lo stato delle variabili. Puoi mettere una variabile nella lista dei watch cliccando col destro sulla variabile e poi scegliendo Watch 'nome variabile'
  • Re: MATRICE SWAP

    Mmm wow lo proverò al più presto grazie
  • Re: MATRICE SWAP

    Se faccio partire il debug mi dice solo che creo un vettore eccetera. In che modo posso capire gli eventuali errori?
  • Re: MATRICE SWAP

    http://www.youtube.com/watch?v=6CGH9Z19dS
Devi accedere o registrarti per scrivere nel forum
9 risposte