Réaliser un programme qui additionne deux heures (heures, minutes, secondes). On ne
gère pas ici les entrées sorties vers l'écran, aussi on initialisera lors de la déclaration
les variables de l'heure 1, et celle de l'heure 2. Pour afficher le résultat, on
utilisera :
printf("La somme est : %d heure(s) %d minute(s) et %d seconde(s).",h,m,s);
Où h, m et s sont les variables dans lesquelles on met le résultat de la somme des deux heures.
Tester avec :
h1=2 m1=34 s1=45
h2=6 m2=45 s2=25
il n'y a que 24 heures, 60 minutes et 60 secondes... De plus, il faut
prévoir que la somme fasse plus de 24 heures (donc faire intervenir une variable
"j" pour le jour, au cas où).
int s1=45 , m1=34 , h1=2 , s2=25 , m2=45 , h2=6 , s,m , h , retenue1 , retenue2 , j ;}
s = (s1 + s2) % 60 ;
retenue1 = (s1 + s2) / 60 ;
m = (m1 + m2 + retenue1) % 60 ;
retenue2 = (m1 + m2 + retenue1) / 60 ;
h = (h1 + h2 + retenue2) % 24 ;
j = (h1 + h2 + retenue2) / 24 ;
printf("La somme est : %d jour %d heure(s) %d minute(s) et %d seconde(s).",j,h,m,s);
Résultat à obtenir :
j = 0, h = 9, m = 20 , s = 10Explications :
Le modulo (%) prend le reste de la division, donc, le résultat de la somme des secondes. Mais il ne faut pas oublier qu'il peut y avoir un "débordement", c'est-à-dire que le nombre de secondes dépasse 60. Dans ce cas, il faut rajouter autant de minutes (au maximum 1) que néccessaire pour faire la somme des minutes (en fait, on fait la somme des minutes, plus la retenue des secondes). On fait de même pour les heures, voir le jour.