Eccolo...
codice:
/*Si vuole simulare l’archivio di chiamate di un gestore telefonico. L’archivio risultamensile (31 giorni) . Ogni giorno vengono effettuate al massimo 10 chiamate e il
costo al minuto di una chiamata è di 10 centesimi. Ogni chiamata è identificata dal
numero chiamante, il numero ricevente, la durata della chiamata. Provvedere
all’implementazione dell’algoritmo per la simulazione dell’archivio.
Permettere, inoltre, all’utente di:
• Dato un numero telefonico visualizzare tutte le chiamate con le relative
informazioni in un singolo giorno
• Dato un giorno e un numero telefonico visualizzare il costo totale delle
chiamate (usare un algoritmo incrementale ricorsivo).
L’archivio può anche essere inizializzato con informazioni casuali. Effettuare almeno
due test per ognuna delle opzioni dell’utente.*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define chiamate 10
#define giorni 30
char *numeri[]={"3341431454", "3462154556", "3911177368", "3338083794", "3398379801"};
typedef struct{ //Dichiarazione struct con io dati delle chiamate.
char *chiamante;
int ricevente;
int durata;
}Dati;
typedef struct{ //Dichiarazione struct contenente l'archivio mensile.
Dati elenco[chiamate][giorni];
}Archivio;
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;
}
void stampaDati(Archivio archivio){ //Procedura per stampare l'archivio, prende come input una struct di tipo Archivio.
int i=0, k=0;
for (i=0; i<=giorni;){
printf("\n\n\t\t----------[GIORNO %d]----------\n\n CHIAMANTE\t\tRICEVENTE\t\tDURATA", i+1);
for (k=0; k<chiamate; k++){
printf("\n[C.%d] %s\t%d\t\t\t%d\tmin.", k+1, archivio.elenco[k][i].chiamante, archivio.elenco[k][i].ricevente, archivio.elenco[k][i].durata);
}
printf("\n\n\t\tPremi invio per scorrere l'elenco.\n\t\t Premi 'e' per ritornare.\n");
getchar();
if (getchar()=='e')
break;
else
i++;
}
}
void stampaElenco(){ //Procedura per stampare l'elenco dei numeri.
int i=0;
printf("I numeri presenti nel database sono i seguenti:\n");
for (i=0; i<5; i++)
printf("[N%d] (+39)%s\n", i+1, numeri[i]);
getchar();
}
void main(){
Archivio simula;
stampaElenco();
simula=creaDati();
stampaDati(simula);
return 0;
}
Grazie ancora per l'aiuto...