Exercice

Écrire un programme comportant :

  1. la déclaration de 3 variables globales entières heures, minutes, secondes ;

  2. une procédure print_heure qui imprimera le message :
    Il est ... heure(s) ... minute(s) ... seconde(s)
    
    en respectant l'orthographe du singulier et du pluriel ;

  3. une procédure set_heure qui admettra trois paramètres de type entiers h, m, s, dont elle affectera les valeurs respectivement à heures, minutes et secondes ;

  4. une procédure tick qui incrémentera l'heure de une seconde ;

  5. la procédure main sera un jeu d'essai des procédures précédentes ;

Une solution possible est donnée ci-après.

#include <stdio.h>
int heures, minutes, secondes;

/*****************************************************************************/
/*                                                                           */
/*                              print_heure                                  */
/*                                                                           */
/*   But:                                                                    */
/*      Imprime l'heure                                                      */
/*                                                                           */
/*   Interface:                                                              */
/*      Utilise les variables globales heures, minutes, secondes             */
/*                                                                           */
/*****************************************************************************/
void print_heure(void)
{
printf("Il est %d heure",heures);
if (heures > 1) printf("s");
printf(" %d minute",minutes);
if (minutes > 1) printf("s");
printf(" %d seconde",secondes);
if (secondes > 1) printf("s");
printf("\n");
}

/*****************************************************************************/
/*                                                                           */
/*                              set_heure                                    */
/*                                                                           */
/*   But:                                                                    */
/*      Met l'heure à une certaine valeur                                    */
/*                                                                           */
/*   Interface:                                                              */
/*      h, m, s sont les valeurs à donner à heures, minutes, secondes        */
/*                                                                           */
/*****************************************************************************/
void set_heure(int h, int m, int s)
{
heures = h; minutes = m; secondes = s;
}

/*****************************************************************************/
/*                                                                           */
/*                              tick                                         */
/*                                                                           */
/*   But:                                                                    */
/*      Incrémente l'heure de une seconde                                    */
/*                                                                           */
/*   Interface:                                                              */
/*      Utilise les variables globales heures, minutes, secondes             */
/*                                                                           */
/*****************************************************************************/
void tick(void)
{
secondes = secondes + 1;
if (secondes >= 60)
   {
   secondes = 0;
   minutes = minutes + 1;
   if (minutes >= 60)
      {
      minutes = 0;
      heures = heures + 1;
      if (heures >= 24) heures = 0;
      }
   }
}

/*****************************************************************************/
/*                                                                           */
/*                              main                                         */
/*                                                                           */
/*****************************************************************************/
int main(void)
{
set_heure(3,32,10);
tick();
print_heure();

set_heure(1,32,59);
tick();
print_heure();

set_heure(3,59,59);
tick();
print_heure();

set_heure(23,59,59);
tick();
print_heure();

return(0);
}



Matthieu Moy 2017-02-08