Problema allocazione dinamica matrice in C

di il
1 risposte

Problema allocazione dinamica matrice in C

Ciao ragazzi, sto facendo i primi esercizi con l'allocazione dinamica per le matrici ma ho un problema: la mia matrice non viene returnata e perde un'iterazione all'interno dei cicli for. Il testo chiedeva di allocare una nuova matrice che per ogni elemento di A diverso da 0 creasse una riga in B contenente valore, riga e colonna.

#include <stdio.h>
#include <stdlib.h>


int **funz(int m, int n, int A[m][n], int nz){
    printf("Inizio allocazione . . .\n");
    int **B = calloc(nz, sizeof(int *));
    if(B == NULL){
        exit(-1);
    }
    int i,j;
    for(i=0; i<3; i++){
        B[i] = (int*)calloc(3, sizeof(int));
        if(B[i] == NULL){
            exit(-1);
        }
    }
    printf("Allocazione avvenuta!\n");
    int index = 0;
    for(i=0; i<m; i++){
        for(j=0; j<n; j++){
            if(A[i][j] != 0){
                B[index][0] = A[i][j];
                B[index][1] = i;
                B[index][2] = j;
                index++;
            }
        }
    }
    return B;
}


int main(){
    int m = 4;
    int n = 4;
    int A[4][4] = {{0,0,0,0},{5,8,0,0},{0,0,3,0},{0,6,0,0}};
    int nz = 4;

    int **B = funz(m,n,A,nz);
    
    int i,j;
    for(i=0; i<nz; i++){
        printf("\n");
        for(j=0; j<3; j++){
            printf("%d ", B[i][j]);
        }
    }
    return 0;
}

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte