Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] somma chilometri per tipo

    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
    codice:
    #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!!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    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
    codice:
    #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;
    
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.