A cura di: Administrator
/* * 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. */ #include <stdio.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 < 23) && (m1 < 60) && (s1 < 60)) invalid_data = 0; else printf("Orario non valido! Reinserirlonn"); } 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 < 24) && (m2 < 60) && (s2 < 60)) { /* Gli orari devo essere in uno stesso arco di 12 ore */ if ((h1 / 12) != (h2 / 12)) printf("Gli orari devono essere in uno stesso arco di 12 ore!nn"); else invalid_data = 0; /* dati validi */ } else printf("Orario non valido! Reinserirlonn"); } 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 secondin", diff); return 0; } unsigned int pastSeconds(unsigned int hour, unsigned int min, unsigned int sec) { return (sec + (min * 60) + ((hour % 12) * 60 * 60)); }
- Programmazione