Matrici e funzioni in C

di il
1 risposte

Matrici e funzioni in C

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!

1 Risposte

  • Re: Matrici e funzioni in C

    Il seg fault viene originato da questa linea

    for(i=0;i<L;i++)

    che dovrebbe essere

    for(i=0;i<T;i++)

    ma occhio anche al fatto che nella funzione mancano le free corrispondenti alle calloc.
Devi accedere o registrarti per scrivere nel forum
1 risposte