Créer un compte à rebours en C++

Suraj P 12 octobre 2023
  1. Créer un compte à rebours dans un environnement Unix
  2. Faire un compte à rebours dans Windows
  3. Créer une minuterie de comptage en C++
Créer un compte à rebours en C++

Cet article vous apprendra à créer une minuterie de comptage et de décomptage en C++. Voyons d’abord comment créer un compte à rebours en C++.

La façon dont cela fonctionne est que nous prenons la minute et les secondes de l’utilisateur comme entrée, puis en utilisant la boucle dans notre programme, nous imprimerons les secondes dans l’ordre inverse ou le compte à rebours.

Nous pouvons utiliser une boucle comme la boucle while ou la boucle for qui comptera jusqu’à ce que le nombre atteigne 1, et à l’intérieur de cela, nous avons besoin d’un mécanisme pour mettre le programme en pause pendant 1 seconde pour voir le changement.

Nous avons différentes fonctions (appels système) dans les environnements de type Unix et Windows pour mettre en pause un programme ou le faire sleep. Cependant, ils ont les mêmes fonctionnalités.

Créer un compte à rebours dans un environnement Unix

Toute machine de type Unix, Linux ou Ubuntu, a une fonction appelée usleep qui prend le temps en microsecondes pour mettre le programme en veille. Nous devons passer la valeur 1000000 pour suspendre l’exécution pendant une seconde.

Cette méthode est définie dans le fichier d’en-tête unistd.h.

Exemple de code :

#include <unistd.h>

#include <ctime>
#include <iostream>
using namespace std;

string getPresentDateTime() {
  time_t tt;
  struct tm *st;

  time(&tt);
  st = localtime(&tt);
  return asctime(st);
}

int main() {
  int seconds;
  cout << "Enter total number seconds for the counter" << endl;
  cin >> seconds;

  while (seconds >= 1) {
    cout << "Counter : " << seconds << " : " + getPresentDateTime() << endl;
    usleep(1000000);
    seconds--;
  }
}

Dans le programme ci-dessus, nous utilisons la méthode getPresentDateTime() pour obtenir la date et l’heure actuelles du système.

Sortie : Le programme ci-dessus a été exécuté dans Ubuntu. Pour l’exécuter dans un environnement de type Unix, enregistrez le fichier, utilisez g++ pour le compiler et tapez ./a.out pour l’exécuter.

g++ first.cpp   //executed in ubuntu
 ./a.out

Enter total number seconds for the counter
7
Counter : 7 : Sun Mar 13 01:31:56 2022

Counter : 6 : Sun Mar 13 01:31:57 2022

Counter : 5 : Sun Mar 13 01:31:58 2022

Counter : 4 : Sun Mar 13 01:31:59 2022

Counter : 3 : Sun Mar 13 01:32:00 2022

Counter : 2 : Sun Mar 13 01:32:01 2022

Counter : 1 : Sun Mar 13 01:32:02 2022

Faire un compte à rebours dans Windows

Tout reste comme nous l’avons fait ci-dessus; la seule différence est que nous devons inclure windows.h au lieu de unistd.h. Et au lieu de usleep, nous devons utiliser la méthode sleep().

La méthode sleep() prend du temps en millisecondes.

Exemple de code :

#include <Windows.h>

#include <ctime>
#include <iostream>
using namespace std;

string getPresentDateTime() {
  time_t tt;
  struct tm *st;

  time(&tt);
  st = localtime(&tt);
  return asctime(st);
}

int main() {
  int seconds;
  cout << "Enter total number seconds for the counter" << endl;
  cin >> seconds;

  while (seconds >= 1) {
    cout << "Counter : " << seconds << " : " + getPresentDateTime() << endl;
    Sleep(1000);
    seconds--;
  }
}

Sortie : Le programme ci-dessus a été exécuté sur l’IDE présent sur Windows.

Enter total number seconds for the counter
10
Counter : 10 : Sun Mar 13 01:42:13 2022

Counter : 9 : Sun Mar 13 01:42:14 2022

Counter : 8 : Sun Mar 13 01:42:15 2022

Counter : 7 : Sun Mar 13 01:42:16 2022

Counter : 6 : Sun Mar 13 01:42:17 2022

Counter : 5 : Sun Mar 13 01:42:18 2022

Counter : 4 : Sun Mar 13 01:42:19 2022

Counter : 3 : Sun Mar 13 01:42:20 2022

Counter : 2 : Sun Mar 13 01:42:21 2022

Counter : 1 : Sun Mar 13 01:42:22 2022

Regardons maintenant une minuterie de comptage.

Créer une minuterie de comptage en C++

Il est implémenté comme un décompteur, la seule différence est que nous exécutons la boucle de manière directe, ce qui est une approche incrémentielle.

Exemple de code : Compteur dans un environnement Windows.

#include <Windows.h>

#include <ctime>
#include <iostream>
using namespace std;

string getPresentDateTime() {
  time_t tt;
  struct tm *st;

  time(&tt);
  st = localtime(&tt);
  return asctime(st);
}

int main() {
  int seconds;
  cout << "Enter total number seconds for the counter" << endl;
  cin >> seconds;

  int count = 0;

  while (count != 10) {
    cout << "Counter : " << seconds << " : " + getPresentDateTime() << endl;
    Sleep(1000);
    seconds++;
    count++;
  }
}

Dans le code ci-dessus, nous incrémentons les secondes 10 fois. Et pour en garder une trace, nous avons introduit une variable count, qui s’arrête lorsque 10 secondes sont écoulées à partir du moment où l’entrée seconds a été donnée.

Production:

Enter total number seconds for the counter
5
Counter : 5 : Sun Mar 13 02:15:42 2022

Counter : 6 : Sun Mar 13 02:15:43 2022

Counter : 7 : Sun Mar 13 02:15:44 2022

Counter : 8 : Sun Mar 13 02:15:45 2022

Counter : 9 : Sun Mar 13 02:15:46 2022

Counter : 10 : Sun Mar 13 02:15:47 2022

Counter : 11 : Sun Mar 13 02:15:48 2022

Counter : 12 : Sun Mar 13 02:15:49 2022

Counter : 13 : Sun Mar 13 02:15:50 2022

Counter : 14 : Sun Mar 13 02:15:51 2022
Auteur: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

Article connexe - C++ Timer