Concetti Chiave
- La funzione pastSeconds calcola i secondi trascorsi dall'ultima mezzanotte, considerando ore, minuti e secondi come input.
- Il programma richiede all'utente di inserire due orari in formato ore, minuti e secondi, assicurandosi che siano validi.
- Viene effettuato un controllo per garantire che i due orari siano all'interno dello stesso ciclo di 12 ore.
- La differenza in secondi tra i due orari viene calcolata e stampata a video in un formato leggibile.
- La funzione utilizza la formula per convertire ore e minuti in secondi, facilitando il calcolo della differenza temporale.
/* * Scrivete una funzioneFunzione per calcolare i secondi
che accetti in input l'ora, suddivisa in tre * argomenti interi (per le ore, i minuti e i secondi), e restituisca * il numero dei secondi trascorsi dall'ultima volta che l'orologio * "ha rintoccato le 12". * Utilizzate questa funzione per calcolare la quantita' di tempo in * secondi che intercorre tra due orari, entrambi i quali siano compresi * all'interno di un ciclo di 12 ore dell'orologio. */ #include
Inserimento del primo orario
h> unsigned int pastSeconds(unsigned int, unsigned int, unsigned int); int main(void) { unsigned int h1, m1, s1; unsigned int h2, m2, s2; unsigned int ps1, ps2, diff; int invalid_data = 1; /* ottiene primo orario (ORE MINUTI SECONDI) */ while (invalid_data) { printf("Inserire il primo orario (ORE MINUTI SECONDI: "); scanf("%u%u%u", &h1, &m1, &s1); if ((h1
"); } invalid_data = 1; /* ottiene secondo orario */ while (invalid_data) { printf("Inserire il secondo orario (ORE MINUTI SECONDI: "); scanf("%u%u%u", &h2, &m2, &s2); if ((h2
"); else invalid_data = 0; /* dati validi */ } else printf("Orario non valido! Reinserirlo
"); } ps1 = pastSeconds(h1, m1, s1); ps2 = pastSeconds(h2, m2, s2); if (ps1 > ps2) diff = ps1 - ps2; else diff = ps2 - ps1; printf("Tra le ore %.2d:%.2d:%.2d e le ore %.2d:%.2d:%.2d ", h1, m1, s1, h2, m2, s2); printf("intercorrono %u secondi
", diff); return 0; } unsigned int pastSeconds(unsigned int hour, unsigned int min, unsigned int sec) { return (sec + (min * 60) + ((hour % 12) * 60 * 60)); }
Domande da interrogazione
- Come si calcola il numero di secondi trascorsi dall'ultima volta che l'orologio ha rintoccato le 12?
- Quali sono le condizioni per inserire orari validi nel programma?
- Come viene calcolata la differenza in secondi tra due orari?
Si utilizza la funzione `pastSeconds`, che accetta ore, minuti e secondi come input e restituisce il totale dei secondi trascorsi dall'ultima mezzanotte, calcolando i secondi in base all'orario fornito.
Gli orari devono essere compresi tra 0 e 23 ore, 0 e 59 minuti, e 0 e 59 secondi, e devono appartenere allo stesso arco di 12 ore, come verificato nel ciclo di input.
La differenza in secondi viene calcolata sottraendo il numero di secondi trascorsi dall'ultima mezzanotte per ciascun orario, utilizzando la funzione `pastSeconds`, e poi si determina il valore assoluto della differenza.