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! Reinserirlo\n\n");
}
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!\n\n");
else
invalid_data = 0; /* dati validi */
} else
printf("Orario non valido! Reinserirlo\n\n");
}
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\n", diff);
return 0;
}
unsigned int
pastSeconds(unsigned int hour, unsigned int min, unsigned int sec)
{
return (sec + (min * 60) + ((hour % 12) * 60 * 60));
}