Ciao a tutti!!!
Stavo provando a allocare dinamicamente le matrici.
A dire il vero il programma che ho scritto funziona però vorrei conferma da qualcuno più esperto di me per vedere se salto qualcosa.
Vi ringrazio anticipatamente
codice:
#include <stdio.h>
#include <stdlib.h>
void allocaMat(int ***, int *, int *);
void insMat(int **, int, int);
void stampa(int **, int, int);
void liberaMat(int ***, int);
int main()
{
int **mat=NULL;
int r, c;
allocaMat(&mat, &r, &c);
insMat(mat, r, c);
stampa(mat, r, c);
liberaMat(&mat, r);
return 0;
}
void liberaMat(int ***m, int r)
{
int i;
for(i=0; i<r; i++){
free((*m)[i]);
}
free(*m);
}
void stampa(int **m, int r, int c)
{
int i, j;
printf("\n\n");
for(i=0; i<r; i++){
for(j=0; j<c; j++){
printf("%d ", m[i][j]);
}
printf("\n");
}
}
void insMat(int **m, int r, int c)
{
int i, j;
for(i=0; i<r; i++){
for(j=0; j<c; j++){
printf("\nmatrice[%d][%d] = ", i+1, j+1);
scanf("%d", &m[i][j]);
}
}
}
void allocaMat(int ***m, int *r, int *c)
{
int i;
printf("\nInserire il numero di righe: ");
scanf("%d", r);
printf("\nInserire il numero di colonne: ");
scanf("%d", c);
*m=(int **)malloc((*r)*(sizeof(int *)));
if(*m==NULL){
printf("\n\nAllocazione impossibile...");
exit(1);
}
for(i=0; i<*c; i++){
(*m)[i]=(int *)malloc((*c)*sizeof(int));
if(((*m)[i])==NULL){
printf("\n\nAllocazione impossibile...");
}
}
}