使用 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
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP