Salve ragazzi, non riesco a capire perchè questo programma nun funzioni.
Deve acquisire da file dei dati nel formato:
<numero di telefono> <gg/mm/yyyy> <durata in secondi> <E/U>
E/U significa che la chiamata è in entrata o in uscita.
Deve prendere da tastiera un numero, trovare quel numero nel file e stampare:
1) minuti totali in uscita verso quel numero
2)data della chiamata più lunga in uscita verso quel numero
3) costo totale delle chiamate considerando uno scatto alla risposta di €0,20 e €0,12 al minuto che scattano al primo secondo del nuovo minuto;
posto direttamente il codice, spero che qualcuno possa aiutarmi:
codice:
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
char num[11]; // numero da acquisire
char tel[11]; // numero telefonico
char date[10]; //data gg/mm/yyyy
int sec; // secondi
int sec_tot=0; // secondi totali
int sec_max=0; //secondi massimi
char date_max[10]; //data della chiamata di durata massima
char EorU; //in Entrata o in Uscita
float price; // prezzo della chiamata
float price_tot; //somma dei prezzi delle chiamate
float min; //minuti (convertiti dai secondi)
FILE* fp;
printf("NUMERO: ");
gets(num);
fp=fopen("/Users/alessandro/Desktop/Telefonate_File/Telefonate_File/input.txt", "r");
while (fscanf(fp, "%s %s %d %c",&tel,&date,&sec,&EorU)!=EOF) {
if (strcmp(tel,num)==0) {
if (EorU=='U') { // controlla se in entrata o in uscita
if (sec>sec_max) {
sec_max=sec; // cerca la chiamata più lunga e salva la data
strcpy(date_max, date);
}
sec_tot=sec_tot+sec; // tempo di chiamate totali
min=sec/60.0; // divide per 60.0 in modo che si aspetti un risultato float
price= 0.20 + (ceil(min)*0.12); //ceil: 12 cent al primo secondo del nuovo minuto
price_tot=price_tot+price; //calcola il prezzo totale
}
}
}
fclose(fp);
printf("\nMINUTI TOTALI IN USCITA: %f" ,sec_tot/60.0);
printf("\nCHIAMATA PIÙ LUNGA: %f min del %s",sec_max/60.0,date_max);
printf("\nCOSTO TOTALE: %f",price_tot);
}
il file è questo:
3468403598 22/11/2011 100 U
3939464677 23/11/2011 30 E
3465674346 23/11/2011 40 U
0997451020 30/12/2011 50 U
0997451020 01/01/2012 100 E
3468403598 03/02/2012 200 U
3468403598 01/04/2011 100 U
3939464677 23/05/2011 30 E
3465674346 23/05/2011 40 U
0997451020 11/05/2011 50 E
0997451020 22/06/2012 300 E
3468403598 19/06/2012 50 U