PDA

Visualizza la versione completa : [C] somma chilometri per tipo


jonnyforever
30-01-2012, 16:05
ciao a tutti non riesco a far girare questo codice non mi vengono i ris finali dei km percorsi del costo totale e della data ultima con tipo R per la citta di TORINO
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
#define NAME 20

int main(int argc,char*argv[])
{
FILE*fp;

char dest[NAME],data[NAME];
int met,i;
char str[MAX];
char tipo;
float km,tot_km,tot_costo;

fp=fopen("viaggi.txt","r");
if(fp==NULL)
{
printf("errore\n");
return -1;
}
if(argc!=2)
{
printf("errore numero parametri del file %s\n",argv[1]);
return -1;


}
tot_km=0.00;

i=0;
while(fgets(str,MAX,fp)!=NULL)
{

sscanf(str,"%s %s %d %c",dest,data,&met,&tipo);



if(strcmp(dest,argv[1])==0 && tipo=='R')
i++;

{
km=(float)met/100.00;
tot_km+=km;


tot_costo=(5.00*i)+(tot_km*0.10);
}


}
printf("chilometri totali verso %s: %.2f\n",argv[1],tot_km);
printf("costo totale verso %s: Euro %.2f\n",argv[1],tot_costo);
printf("volte R = %d",i);


fclose(fp);
return 0;

}

il file sorgente :
dest data met tipo
torino 22/01/2011 120000 A
milano 01/03/2011 80000 R
genova 03/06/2011 100000 A
bologna 01/02/2011 100000 A
torino 15/01/2011 120000 R
milano 20/01/2011 80000 R
torino 01/01/2011 80000 A
torino 22/01/2011 80000 R

e il file di output deve essere
Chilometri totali verso torino: 200.00
Data ultimo viaggio: 22/01/2011 // questa non l ho ancora fatto(nn so come si fa help me)
Costo totale viaggi verso torino: Euro 30.00
Il costo totale dei viaggi, sapendo che la tariffazione di 5 per ogni viaggio pi 10 cent. al chilometro.

GRAZIE!!

oregon
30-01-2012, 18:48
S ma fornire il codice e il testo dell'esercizio non funziona ... devi indicare cosa non va di specifico per il problema (singolo) che stai affrontando.

Se hai n problemi da risolvere, comincia dal primo e lascia perdere gli altri. Dicci qual questo problema che stai affrontando e dicci quali problemi incontri nel codice.

jonnyforever
30-01-2012, 23:05
ho risolto cos ma non so perch nella strcpy(ultima,data) mi copia l'ultima data 'R' cerso torino cronologicamente parlando...(me lo hann detto ma nn ho capito il perch)..grazie
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
#define NAME 20
#include <string.h>

int main(int argc,char*argv[])
{
FILE*fp;

char dest[NAME],data[NAME];
int met,i;
char str[MAX];
char ultima[NAME];
char tipo;
float tot_km,tot_met,tot_costo;

fp=fopen("viaggi.txt","r");
if(fp==NULL)
{
printf("errore\n");
return -1;
}
if(argc!=2)
{
printf("errore numero parametri del file %s\n",argv[1]);
return -1;


}
tot_met=0;

i=0;
while(fgets(str,MAX,fp)!=NULL)
{

if(sscanf(str,"%s %s %d %c",dest,data,&met,&tipo)!=4)
printf("errore numero parametri\n");


else if(strcmp(dest,argv[1])==0 && tipo=='R')


{
tot_met+=met;
i++;
strcpy(ultima,data);

}
tot_km=(float)tot_met/1000;
tot_costo=(5.00*i)+(tot_km*0.10);



}
printf("chilometri totali verso %s: %.2f\n",argv[1],tot_km);
printf("costo totale verso %s: Euro %.2f\n",argv[1],tot_costo);
printf("ultimo viaggio per %s e in data %s\n",argv[1],ultima);
printf("volte R = %d",i);


fclose(fp);
return 0;

}

Loading