Ho creato una struttura chiamata matrice così definita :
typedef struct
{
double **matrice; /* Matrice */
int num_righe; /* Numero righe della matrice */
int num_colonne; /* Numero colonne della matrice */
} matrice_t;
Poi ho creato una funzione che ne fa l'allocazione dinamica , dopo aver inserito il numero di righe e colonne :
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));
}
}
Poi ho fatto una funzione per inserire dati nella matrice :
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]);
}
}
}
E infine una funzione che stampa la matrice :
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]);
}
}
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?