Concetti Chiave
- La funzione pastSeconds calcola i secondi trascorsi dalle 12, accettando ore, minuti e secondi come input.
- Il programma richiede due orari distinti, entrambi all'interno di un ciclo di 12 ore, per calcolare la differenza in secondi.
- Viene effettuato un controllo di validità per gli input degli orari, assicurando che ore siano tra 0 e 11, e minuti e secondi tra 0 e 59.
- La differenza in secondi tra i due orari viene calcolata sottraendo i secondi passati del primo orario da quelli del secondo.
- Il risultato, che rappresenta i secondi tra i due orari inseriti, viene stampato in un formato leggibile.
/* * Scrivete una funzione 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. */ #includeunsigned 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)); }