用 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