使用 C++ 逐个计算 LED 灯的变化以显示数字

c++server side programmingprogramming更新于 2024/9/27 7:24:00

我们给定一个正数,假设为 num,任务是计算逐个显示的 LED 灯的变化次数。我们假设最初所有 LED 都处于关闭状态,它们将根据字符串值启动。

为了解决这个问题,我们需要了解七段显示器是什么及其工作原理。

什么是七段显示器

七段显示器是一种输出显示设备,它提供了一种以图像、文本或十进制数形式显示信息的方法,这是更复杂的点阵显示器的替代方案。它广泛用于数字时钟、基本计算器、电子仪表和其他显示数字信息的电子设备。它由七段发光二极管 (LED) 组成,组装方式类似于数字 8。

七段显示器的工作原理

当所有段都通电时,会显示数字 8,如果断开"g"的电源,则会显示数字 0。在七段显示器中,可以同时在不同引脚上施加电源(或电压),因此我们可以形成从 0 到 9 的显示数字组合。由于七段显示器不能形成像 X 和 Z 这样的字母,所以它不能用于字母,只能用于显示十进制数值。但是,七段显示器可以形成字母 A、B、C、D、E 和 F,因此它也可以用于表示十六进制数字。

例如

输入 − num = “123 ”
输出 − count 为 5

解释 −点亮 1 所需的 LED 总数为 2,点亮 2 所需的 LED 总数为 5,点亮 3 所需的 LED 总数为 5。因此显示所需的变化总数为 − 5

输入 − num = “576 ”
输出 − count 为 10

解释 −点亮 5 所需的 LED 总数为 5,点亮 7 所需的 LED 总数为 3,点亮 6 所需的 LED 总数为 6。因此,显示所需的变化总数为:10

以下程序中使用的方法如下

  • 输入定义要点亮的数字的整数值字符串

  • 使用 length() 函数计算给定字符串的长度,该函数将根据字符串中的数字返回一个整数值。

  • 创建一个用于存储所有 LED 值的数组。

  • 取一个临时变量,假设为 temp,它将存储该值。

  • 开始循环,使 i 为 1,并且 i 小于长度

  • 在循环内部,使用 temp + 设置 temp abs([LED[str[i] - ‘0’] - LED[n[i-1] - ‘0’]);

  • 返回 count

  • 打印结果。

示例

#include<iostream>
using namespace std;
int countled(string str){
   // 显示一位数字所需的 LED 数量
   int Led[] = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 5 };
   int len = str.length();
   // 计算变化
   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

相关文章