
Originariamente inviata da
minomic
Diciamo che ogni volta che vuoi usare una struct Dati devi allocare il campo "chiamante". Però non mi è molto chiaro il motivo per cui, in Archivio, fai
codice:
Dati *elenco[chiamate][giorni];
Sarebbe un puntatore a un array bi-dimensionale? Secondo me volevi solo una matrice, nel qual caso togli l'asterisco.
In pratica volevo creare un elenco di 31 giorni in cui in ogni giorno vi sono 10 telefonate, in questo modo per gli altri punti del problema posso scegliere giorno e numero da input e stampare le informazioni che mi servono.
Per quanto riguarda il codice, l'ho modificato in questo modo (ho riportato solo la funzione interessata):
codice:
Archivio creaDati(){ //Funzione per creare l'archivio, essa restituisce una struct di tipo Archivio. int i=0, j=0, k=0;
Archivio archivio;
for (i=0; i<=giorni; i++)
for (k=0; k<chiamate; k++)
archivio.elenco[k][i].chiamante=malloc(sizeof(Dati));
srand(time(NULL));
for (i=0; i<=giorni;){ //Ciclo for per riempire i campi Dati, una rand genera casualmente l'indice j dei numeri,
//una rand genera casualmente numeri che ricevono la chiamata ed un'ultima genera la durata.
for (k=0; k<chiamate; k++){
j=rand()%5;
strcpy(archivio.elenco[k][i].chiamante, numeri[j]);
archivio.elenco[k][i].ricevente = 1000000+rand()%999999+1;
archivio.elenco[k][i].durata = rand()%121;
}
}
return archivio;
}
Ora il programma non va in crash ma mi esegue solo la prima procedura per la stampa dell'elenco e non esegue altro...