使用 C++ 統計 LED 燈顯示數字時變化的次數
假設我們得到一個正數,例如 num,任務是計算 LED 燈依次顯示時變化的次數。我們假設最初所有 LED 都處於關閉狀態,並根據字串值開始亮起。
為了解決這個問題,我們需要了解什麼是七段顯示器及其工作原理。
什麼是七段顯示器
七段顯示器是一種輸出顯示裝置,可以透過影像、文字或十進位制數字的形式顯示資訊,它是比更復雜的點陣顯示器更簡單的替代方案。它廣泛應用於數字時鐘、基本計算器、電子儀表以及其他顯示數字資訊的電子裝置中。它由七個發光二極體 (LED) 段組成,這些段組合在一起類似於數字 8。
七段顯示器的工作原理
當所有段都通電時,顯示數字 8;如果斷開“g”的電源,則顯示數字 0。在七段顯示器中,可以同時對不同引腳施加電源(或電壓),因此我們可以組合顯示從 0 到 9 的數字。由於七段顯示器無法形成像 X 和 Z 這樣的字母,因此它不能用於顯示字母,只能用於顯示十進位制數字的大小。但是,七段顯示器可以形成字母 A、B、C、D、E 和 F,因此也可以用於表示十六進位制數字。
例如
Input − num = “123 ” Output − count is 5
說明 - 顯示 1 需要點亮 2 個 LED,顯示 2 需要點亮 5 個 LED,顯示 3 需要點亮 5 個 LED。因此,顯示過程中所需的總變化次數為 - 5
Input − num = “576 ” Output − count is 10
說明 - 顯示 5 需要點亮 5 個 LED,顯示 7 需要點亮 3 個 LED,顯示 6 需要點亮 6 個 LED。因此,顯示過程中所需的總變化次數為:10
下面程式中使用的方案如下
輸入定義要點亮的數字的整數字符串
使用 length() 函式計算給定字串的長度,該函式將根據字串中的數字返回一個整數值。
建立一個數組,用於儲存所有 LED 值。
取一個臨時變數,例如 temp,用於儲存值。
開始迴圈,從 i=1 開始,到 i 小於長度結束
在迴圈內,將 temp 設定為 temp + abs([LED[str[i] - ‘0’] - LED[n[i-1] - ‘0’]);
返回計數
列印結果。
示例
#include<iostream> using namespace std; int countled(string str){ // number of LED required to display a digit int Led[] = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 5 }; int len = str.length(); // calculating the change int res = Led[str[0] - '0']; for (int i = 1; i < len; i++){ res = res + abs(Led[str[i] - '0'] - Led[str[i - 1] - '0']); } return res; } int main(){ string str = "123"; cout <<"count is "<<countled(str); return 0; }
輸出
如果我們執行以上程式碼,我們將得到以下輸出:
count is 5