Salve a tutti...
Sto cercando di scrivere un programma in C che mi crei una matrice con allocazione dinamica, assegnando poi a ciascun elemento un valore casuale minore di 20...
Ho definito il tipo matrice come una struttura contenente un doppio puntatore a interi, e poi due interi, corrispondenti rispettivamente al numero di righe e colonne della matrice...
Ovviamente, se posto qui, è perchè c'è qualcosa che non torna.
A livello di compilazione, non mi da problemi...Però quando lo mando in esecuzione si blocca..
Ho controllato dove potesse essere l'errore, e credo che il problema riguardi proprio l'allocazione della memoria...Non riesco però a individuare l'errore...
Vi allego il codice:
codice:
#include <stdio.h>
#include <time.h>
#include <math.h>
typedef struct {
int **m;
int r;
int c;
} mat;
void Alloca(mat);
main () {
int i,j;
mat M;
M.r=5;
M.c=6;
Alloca(M);
srand(time(NULL));
for (i=0,j=0;i<M.r;j++) {
if (j==M.c) {
j=0;
i++;
}
M.m[i][j]= rand()%20;
}
for (i=0,j=0;i<M.r;j++) {
if (j==M.c) {
j=0;
i++;
printf("\n");
}
printf("%d\t", M.m[i][j]);
}
}
void Alloca (mat M) {
int i;
M.m=(int**)calloc(M.r,sizeof(int*));
for (i=0;i<M.r;i++)
M.m[i]=(int*)calloc(M.c,sizeof(int));
return;
}
Grazie per l'aiuto.