Programmation Avancée en C


24h_chrono.c

00001 #include <stdio.h>
00002 
00003 int heure, minute, seconde; // variables globales
00004     /* Affichage */
00005 void printTime() {
00006     if ((heure == 0) && (minute == 0) && (seconde == 0)) {
00007         printf("*** BOUM!!! ***\n");
00008         return;  // permet de sortir de la fonction ici
00009     }
00010     printf("%d heure%s ",   heure,   (heure > 1)  ? "s" : "");
00011     printf("%d minute%s ",  minute,  (minute > 1) ? "s" : "");
00012     printf("%d seconde%s ", seconde, (seconde > 1)? "s" : "");
00013     printf("avant explosion!\n");
00014 }
00015     /* Affectation des variables globales heure, minute et seconde */
00016 int setTime(int h, int m, int s) {
00017     if ((h >= 0) && (h <= 24) && (m >= 0) && (m <= 60) && (s >= 0) && (s <= 60)) {
00018         heure   = h;
00019         minute  = m;
00020         seconde = s;
00021         return 0;
00022     }
00023     printf("Erreur de format dans l'heure (h=%d, m=%d, s=%d)!\n",h,m,s);
00024     return 1;
00025 }
00026     /* décrémente l'heure de 1 seconde */
00027 void tick() {
00028     seconde--; 
00029     if (seconde < 0) {
00030         seconde = 59;
00031         minute--;
00032         if (minute < 0) {
00033             minute = 59;
00034             heure--;
00035         }
00036     }
00037 }
00038     /* Une procédure pour faciliter les tests */
00039 void test(int h,int m, int s) {
00040     setTime(h,m,s);
00041     printf("Début : "); printTime();
00042     tick();
00043     printf("Fin   : "); printTime();
00044     printf("\n");
00045 }
00046 
00047 int main()
00048 {
00049     test(0,0,1);
00050     test(0,0,2);
00051     test(0,1,0);
00052     test(1,0,0);
00053     test(25,0,75);
00054     return 0;
00055 }
00056