使用 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

更新於: 2020 年 5 月 15 日

267 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告