Confronto tra due orari [C]

di il
6 risposte

Confronto tra due orari [C]

Ciao!
Sto scrivendo un programma che - tra le varie scelte - permetta di visualizzare i treni che, data la destinazione e l'orario entro il quale si vuole arrivare a destinazione, stampi tutti i treni che rispettano i vincoli imposti dall'utente.
Il problema è che non so come confrontare due orari, dato che devo per forza inserirli nella lista dei treni presenti in stazione nel formato hh:mm , quindi utilizzando stringhe.
Ho provato quindi ad arrangiarmi ragionandoci un po' su (in un modo abbastanza strambo rivelatosi poi anche sbagliato), confrontando la stringa dell'orario del treno presente in stazione ("orarriv") con la stringa degli orari inserita, per la ricerca, dall'utente ("orarriv1").
Vi lascio il pezzo codice in questione, vi sarei grato se riusciste a schiarirmi le idee sulla situazione:
char dest1[50], orarriv1[6];
            int i=0;

            printf("\nDestinazione: "); scanf("%s", &dest1);
            printf("Orario di arrivo: "); scanf("%s", &orarriv1);

            do
            {
                bool t=false, t1=false;

                if(dest[i]==dest1 && (orarriv[i][0]&&orarriv[i][1])<(orarriv1[0]&&orarriv1[1]) && (orarriv[i][3]&&orarriv[i][4])<(orarriv1[3]&&orarriv1[4]))
                    {
                        t=true;
                        t1=true;
                    }

                if(t==true && t1==true)
                    {
                        printf("___________\n Treno %s \n___________", cod[i]);
                        printf("\nOrario partenza: %s", orpart[i]);
                        printf("\nOrario arrivo: %s", orarriv[i]);
                    }

                i++;
            }while(i>dim);

6 Risposte

  • Re: Confronto tra due orari [C]

    Usa due variabili intere

    hh
    mm

    e per l'input

    scanf("%d:%d", &hh, &mm);

    Così potrai lavorare sugli interi più comodamente.
  • Re: Confronto tra due orari [C]

    Magari! È quello che avrei fatto, se l'esercizio non mettesse proprio il vincolo di utilizzare una stringa
  • Re: Confronto tra due orari [C]

    Allora l'input lo fai in una stringa ma dopo estrai le due parti in due variabili intere per i confronti.
  • Re: Confronto tra due orari [C]

    In che modo potrei farlo?
  • Re: Confronto tra due orari [C]

    Con una semplice sscanf
    
    	int hh, mm;
    	sscanf(orarriv1, "%d:%d", &hh, &mm);
    
  • Re: Confronto tra due orari [C]

    Per rendere ancora più spiccio il confronto, dopo aver ricavato ore e minuti potresti convertirli in secondi e tenerti soltanto quel valore all'interno del programma, così il confronto si semplifica notevolmente.
Devi accedere o registrarti per scrivere nel forum
6 risposte