使用 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 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.