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.  */ #include  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

  1. Qual è lo scopo della funzione `pastSeconds` nel codice?
  2. La funzione `pastSeconds` calcola il numero di secondi trascorsi dall'ultima volta che l'orologio ha segnato le 12, prendendo in input ore, minuti e secondi e restituendo il totale dei secondi.

  3. Come viene garantito che gli orari inseriti siano nello stesso ciclo di 12 ore?
  4. Il programma verifica che gli orari siano nello stesso ciclo di 12 ore controllando che la divisione intera delle ore per 12 sia uguale per entrambi gli orari inseriti.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community