用 C++ 製作倒數計時器

Suraj P 2023年10月12日
  1. 在 Unix 環境中製作倒數計時器
  2. 在 Windows 中製作倒數計時器
  3. 在 C++ 中製作一個向上計數計時器
用 C++ 製作倒數計時器

本文將教授如何在 C++ 中製作一個向上和向下計數的計時器。首先,讓我們看看如何在 C++ 中製作倒數計時器。

它的工作方式是我們從使用者那裡獲取分鐘和秒作為輸入,然後在我們的程式中使用迴圈,我們將以相反的順序或倒計時列印秒。

我們可以使用類似 while 迴圈或 for 迴圈這樣的迴圈,它會倒計時直到數字達到 1,在其中,我們需要一種機制來暫停程式 1 秒以檢視變化。

我們在類 Unix 環境和 Windows 中有不同的函式(系統呼叫)來暫停程式或使其睡眠。但是,它們具有相同的功能。

在 Unix 環境中製作倒數計時器

任何類 Unix 機器,Linux 或 Ubuntu,都有一個名為 usleep 的函式,它需要以微秒為單位的時間讓程式休眠。我們需要將值作為 1000000 傳遞以暫停執行一秒鐘。

此方法在 unistd.h 標頭檔案中定義。

示例程式碼:

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

在上述程式中,我們使用 getPresentDateTime() 方法從系統獲取當前日期和時間。

輸出:上面的程式是在 Ubuntu 中執行的。要在類 Unix 環境中執行它,儲存檔案,使用 g++ 編譯它,然後鍵入 ./a.out 來執行它。

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

在 Windows 中製作倒數計時器

一切都和我們上面所做的一樣;唯一的區別是我們必須包含 windows.h 而不是 unistd.h。而不是 usleep,我們必須使用 sleep() 方法。

sleep() 方法需要以毫秒為單位的時間。

示例程式碼:

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

輸出:上述程式在 Windows 上的 IDE 上執行。

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

現在讓我們看一個遞增計數器。

在 C++ 中製作一個向上計數計時器

它的實現就像一個遞減計數器,唯一的區別是我們以轉發方式執行迴圈,這是一種增量方法。

示例程式碼: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++;
  }
}

在上面的程式碼中,我們將秒數增加 10 次。為了跟蹤它,我們引入了一個變數 count,它在從給出 seconds 輸入的時間開始 10 秒後停止。

輸出:

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
作者: 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

相關文章 - C++ Timer