Ho creato una struttura chiamata matrice così definita :
Poi ho creato una funzione che ne fa l'allocazione dinamica , dopo aver inserito il numero di righe e colonne :
Poi ho fatto una funzione per inserire dati nella matrice :
E infine una funzione che stampa la matrice :
Solo che in esecuzione, fino alla funzione che stampa sembra andare tutto bene, ma quando deve stampare la matrice si crea un errore di segmentazione e quindi l'esercuzione non va a buon termine. Non riesco a trovare l'errore, un aiutino?
Codice:
typedef struct
{
double **matrice; /* Matrice */
int num_righe; /* Numero righe della matrice */
int num_colonne; /* Numero colonne della matrice */
} matrice_t;
Codice:
void alloca_matrice(matrice_t *mat)
{
int i;
/* alloca le righe */
mat-> matrice = (double **)calloc(mat-> num_righe,sizeof(double *));
/* alloca le colonne */
for (i=0;
i < mat->num_righe;
i++)
{
mat-> matrice[i] = (double *)calloc(mat-> num_colonne,sizeof(double));
}
}
C:
void riempi_matrice(matrice_t *mat)
{
int i,
j;
for (i=0;
i < mat->num_righe;
i++)
{
for(j=0;
j < mat->num_colonne;
j++)
{
printf("Inserisci l'elemento nella %d riga e %d colonna ---> ",
i + 1, j + 1);
scanf("%lf",&mat->matrice[i][j]);
}
}
}
C:
void stampa_matrice(matrice_t *mat)
{
int i,
j;
for (i=0;
i < mat->num_righe;
i++)
{
printf("\n");
}
for(j=0;
j < mat->num_colonne;
j++)
{
printf("%f\t",
mat->matrice[i][j]);
}
}