Esercizio C Funzione che restituisca nuova matrice

di il
10 risposte

Esercizio C Funzione che restituisca nuova matrice

AIUTO!! Non riesco a svolgere questo passaggio... qualcuno può aiutarmi?
Il testo mi chiede "Date due matrici A e B scrivere: una funzione che restituisca una nuova matrice C = A + Bt.
Io ho fatto:
int*sumTwoMatrices (int*A, int*B, int r, int c){
// inverto r(righe) con c (colonne) per fare la trasposi di B
// ovvero r (colonne) e c (righe.
int i,j;
int*C = (int*) malloc (r*c*sizeof (int));
for (i=0; i<r; i++){
for (j=0; j <c; j++){
C[r*j+i]= A [r*j+i] + B [c*i+j];
}
}
return C;
}

10 Risposte

  • Re: Esercizio C Funzione che restituisca nuova matrice

    Che c'entra la trasposta?
  • Re: Esercizio C Funzione che restituisca nuova matrice

    Perchè la chiede l'esercizio.
    il codice che ho scritto è corretto per far si che mi venga resa una nuova matrice C uguale alla somma di A per la trasposta di B
  • Re: Esercizio C Funzione che restituisca nuova matrice

    libellula9 ha scritto:


    Perchè la chiede l'esercizio.
    il codice che ho scritto è corretto per far si che mi venga resa una nuova matrice C uguale alla somma di A per la trasposta di B
    Libellula ma non ha senso. La somma A+Bt è definibile solo se il numero di colonne di B è uguale al numero di righe di A e il numero di righe di B è uguale al numero di colonne di A. Come fa un esercizio a chiederti una cosa non definibile? Rileggi meglio
  • Re: Esercizio C Funzione che restituisca nuova matrice

    State parlando di somma o prodotto? Mi sembra che ci sia confusione
  • Re: Esercizio C Funzione che restituisca nuova matrice

    L'esercizio chiede sia la somma che il prodotto... in particolare il secondo punto chiede "una funzione che restituisca una nuova matrice A* Bt" prodotto righe per colonne
    Voi come lo fareste?
  • Re: Esercizio C Funzione che restituisca nuova matrice

    All'inizio hai parlato solo si somma e la trasposta non c'entra nulla
  • Re: Esercizio C Funzione che restituisca nuova matrice

    Va bene, considerando anche questo secondo punto sapete dirmi dove è l'errore per il quale non riesco ad ottenere la funzione?
  • Re: Esercizio C Funzione che restituisca nuova matrice

    La funzione sumTwoMatrices è sbagliata perché non devi usare la trasposta. Rivedi il concetto di somma si matrici.

    Per la somma non hai mostrato nessuna funzione.
  • Re: Esercizio C Funzione che restituisca nuova matrice

    Oregon certo che si può sommare la trasposta, sempre matrice è, basta che rispetti le dimensioni dette.

    Copio e incollo da internet (tanto è un problema stranoto)
    Questa è la somma generica di due matrici con allocazione dinamica
    
    int** addMatrix(int** matrix1,int** matrix2,int r1,int c1,int r2,int c2) {
        int** addition = (int**)malloc(r1*sizeof(int*));
        if (r1 == r2 && c1 == c2) {
            for (int row = 0; row < r1; row++) {
                addition[row]=(int*)malloc(r1*sizeof(int));
                for (int col = 0; col < c1; col++)
                    addition[row][col] = matrix1[row][col] + matrix2[row][col];
            }
        } else {
            printf("error\n");
        }
        return addition;
    }
    
    Per sommare la trasposta basta che inverti r2 e c2 e [row] e [col] della seconda matrice
  • Re: Esercizio C Funzione che restituisca nuova matrice

    Si ma intendevo che scrivesse una funzione generica per la somma e una per ottenere la trasposta.
Devi accedere o registrarti per scrivere nel forum
10 risposte