使用 C++ 逐个计算 LED 灯的变化以显示数字
我们给定一个正数,假设为 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