实现这么一个函数:传入一个int值,在屏幕输出类似LED显示屏效果的字母拼图,例如:
输入1234567890,输出:
请注意每个字符的固定宽度和高度,两个数字间保留一个空格。
函数名:void LEDprint(int num);
-
/* numberToLED.cpp */
-
// 打印数字的LED形式
-
#include <iostream>
-
#include <vector>
-
#include <string>
-
-
using namespace std;
-
-
// LED模子
-
string LEDarray[][7] = {
-
{ " --- ", // 0
-
"| |",
-
"| |",
-
" ",
-
"| |",
-
"| |",
-
" --- "},
-
-
{" ", // 1
-
" |",
-
" |",
-
" ",
-
" |",
-
" |",
-
" "},
-
-
{" --- ", // 2
-
" |",
-
" |",
-
" --- ",
-
"| ",
-
"| ",
-
" --- "},
-
-
{" --- ",
-
" |",
-
" |",
-
" --- ",
-
" |",
-
" |",
-
" --- "},
-
-
{" ",
-
"| |",
-
"| |",
-
" --- ",
-
" |",
-
" |",
-
" "},
-
-
{" --- ",
-
"| ",
-
"| ",
-
" --- ",
-
" |",
-
" |",
-
" --- "},
-
-
{" --- ",
-
"| ",
-
"| ",
-
" --- ",
-
"| |",
-
"| |",
-
" --- "},
-
-
{" --- ",
-
" |",
-
" |",
-
" ",
-
" |",
-
" |",
-
" "},
-
-
{" --- ",
-
"| |",
-
"| |",
-
" --- ",
-
"| |",
-
"| |",
-
" --- "},
-
-
{" --- ",
-
"| |",
-
"| |",
-
" --- ",
-
" |",
-
" |",
-
" --- "}
-
};
-
-
-
void LEDprint(int num)
-
{
-
if (num < 0)
-
{
-
return;
-
}
-
char str[12] = {'\0'};
-
itoa(num, str, 10);
-
-
int len = strlen(str);
-
-
string (*LED)[7] = new string[len][7];
-
// 拼接到LED[][]中 (其实可以更简化,只拼接索引index即可)
-
for (int i = 0; i < len; i++)
-
{
-
int index = str[i] - '0';
-
for (int j = 0; j < 7; j++)
-
{
-
LED[i][j] = LEDarray[index][j];
-
}
-
-
}
-
-
// print
-
for (int j = 0; j < 7; j++)
-
{
-
for (int i = 0; i < len; i++)
-
{
-
cout << LED[i][j] << " ";
-
}
-
cout << endl;
-
}
-
delete [] LED;
-
}
-
-
void main()
-
{
-
int num;
-
-
cout << "input a number:";
-
cin >> num;
-
-
if (cin.good())
-
{
-
LEDprint(num);
-
}
-
-
cout << "... End ..." << endl;
-
}
效果如下:
阅读(5147) | 评论(1) | 转发(0) |