Erstellen eine Countdown-Timer in C++

Suraj P 12 Oktober 2023
  1. Erstellen Sie einen Countdown-Timer in der Unix-Umgebung
  2. Erstellen Sie einen Countdown-Timer in Windows
  3. Erstellen Sie einen aufwärts zählenden Timer in C++
Erstellen eine Countdown-Timer in C++

In diesem Artikel erfahren Sie, wie Sie in C++ einen auf- und abwärts zählenden Timer erstellen. Sehen wir uns zunächst an, wie man in C++ einen Countdown-Timer erstellt.

Die Funktionsweise ist, dass wir die Minute und die Sekunden vom Benutzer als Eingabe nehmen und dann mit loop in unserem Programm die Sekunden in umgekehrter Reihenfolge oder Countdown drucken.

Wir können eine Schleife wie die while-Schleife oder die for-Schleife verwenden, die herunterzählt, bis die Zahl 1 erreicht, und darin brauchen wir einen Mechanismus, um das Programm für 1 Sekunde anzuhalten, um die Änderung zu sehen.

Wir haben verschiedene Funktionen (Systemaufrufe) in Unix-ähnlichen Umgebungen und Windows, um ein Programm anzuhalten oder in den Schlafmodus zu versetzen. Sie haben jedoch die gleiche Funktionalität.

Erstellen Sie einen Countdown-Timer in der Unix-Umgebung

Jede Unix-ähnliche Maschine, Linux oder Ubuntu, hat eine Funktion namens usleep, die die Zeit in Mikrosekunden benötigt, um das Programm in den Ruhezustand zu versetzen. Wir müssen den Wert als 1000000 übergeben, um die Ausführung für eine Sekunde anzuhalten.

Diese Methode ist in der Header-Datei unistd.h definiert.

Beispielcode:

#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--;
  }
}

Im obigen Programm verwenden wir die Methode getPresentDateTime(), um das aktuelle Datum und die Uhrzeit vom System zu erhalten.

Ausgabe: Das obige Programm wurde in Ubuntu ausgeführt. Um es in einer Unix-ähnlichen Umgebung auszuführen, speichern Sie die Datei, verwenden Sie g++, um sie zu kompilieren, und geben Sie ./a.out ein, um sie auszuführen.

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

Erstellen Sie einen Countdown-Timer in Windows

Alles bleibt so, wie wir es oben getan haben; Der einzige Unterschied besteht darin, dass wir windows.h anstelle von unistd.h einfügen müssen. Und statt usleep müssen wir die Methode sleep() verwenden.

Die Methode sleep() benötigt Zeit in Millisekunden.

Beispielcode:

#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--;
  }
}

Ausgabe: Das obige Programm wurde auf der unter Windows vorhandenen IDE ausgeführt.

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

Sehen wir uns nun einen Upcounter-Timer an.

Erstellen Sie einen aufwärts zählenden Timer in C++

Es ist genau wie ein Abwärtszähler implementiert, der einzige Unterschied besteht darin, dass wir die Schleife in einer weiterleitenden Weise ausführen, was ein inkrementeller Ansatz ist.

Beispielcode: Aufwärtszähler in einer Windows-Umgebung.

#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++;
  }
}

Im obigen Code erhöhen wir die Sekunden 10 Mal. Und um den Überblick zu behalten, haben wir eine Variable count eingeführt, die stoppt, wenn 10 Sekunden nach der Eingabe von seconds abgelaufen sind.

Ausgabe:

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
Autor: 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

Verwandter Artikel - C++ Timer