Ciao a tutti,
ho problemi con l'utilizzo delle funzioni in C. Vorrei scrivere una funzione che mi calcoli una determinata matrice e poi richiamare questa funzione nel main per ottenere la stampa degli elementi della matrice, ma il programma mi restituisce "Segmentation fault" . Vi riporto una parte del programma che ho scritto:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
double **B, **F;
double A, A2;
int i, j, dt, dr, k, ti;
int L=4, T=8, TMAX=100;
Ho definito una funzione per il calcolo della matrice che voglio ottenere. Ho definito le matrici con malloc e le ho riempite con numeri random:
void mat(double **C, int dt, int dr)
{
time_t t;
srand(time(&t));
F=(double**)calloc(T,sizeof(double*));
for(i=0;i<L;i++)
F[i]=(double*)calloc(L,sizeof(double));
C=(double**)calloc(T,sizeof(double*));
for(k=0;k<T;k++)
C[k]=(double*)calloc(L,sizeof(double));
for(t=0;t<=TMAX;ti++)
{
// riempio la matrice F
for(i=0;i<T;i++)
{
for(j=0;j<L;j++)
{
F[i][j]=floor(100*(rand()/(double)RAND_MAX));
}
}
}
Stampo la matrice desiderata:
for(dt=0;dt<T;dt++) for(dr=1;dr<L;dr++)
C[dt][dr]= (F[dt][dr]-A*A2);
printf(" La C a distanza %d ed al tempo %d vale %lf \n",dr,dt,C[dt][dr]);
}
dove A ed A2 sono due double di cui non ho riportato il calcolo per rendere più leggibile il programma.
Ora voglio che nel main mi vengano stampati i valori della matrice che in void ho chiamato C.
int main()
{
int drmax=L/2;
for(dt=0;dt<T;dt++)
{ printf("\n");
for( dr=1;dr<=drmax;dr++)
mat(B, dt, dr);
}
}
Potreste aiutarmi a capire dov' è l'errore? Grazie!