24小时热门版块排行榜    

查看: 541  |  回复: 3

冰雨hust

铁虫 (小有名气)

[求助] c++显示类似LED显示效果的数字拼图

要在屏幕上显示类似LED显示效果的数字拼图,咋显示啊?我们直接在屏幕上用cout显示的数字都不是这种效果啊,请教各位大神啦~~~~

LED数字输入问题.jpg
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fhh2626

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
具体写程序太麻烦了。。我把思路说给你听:
如图所示,每一个数是由7行,5列组成的,第一步应该是把这10个数字每一个位置是什么符号记录下来
然后读入数字,可以不断进行%10的操作,将每一次的结果记录在数组中(或者vector中更好),进行n次并且将后面的0全部舍弃
接下来就是统计位数,确定每一位的值以及拼装的过程了
2楼2013-03-14 20:16:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军


xzhdty: 金币+1, 专家考核, 谢谢骠骑将军 2013-03-15 07:00:18
这个问题挺有意思的,楼上说的拼接字符串是一种办法,实施起来太麻烦,因为需要按照位置拼接,而且每一个数字不是连续的,需要考虑前面已经有的数字和当前数字的每一行(7行),可以实现,就是太麻烦了.
如果你是在windows下,那就方便了.可以用windows api来实现
先看结果,我重载了LEDprint,可以直接输入字符串(这样就能print第一个0,否则数字不接受第一个字符是0 的情况)


具体代码:
CODE:
#include
#include
#include
#include
using namespace std;

void gotoxy(int x, int y)
{
   COORD coord = {x, y};
   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

string codes[10][7] = {
    {   " --- ",    // 0
        "|   |",
        "|   |",
        "     ",
        "|   |",
        "|   |",
        " --- "},
    {   "     ",    // 1
        "    |",
        "    |",
        "     ",
        "    |",
        "    |",
        "     "},
    {   " --- ",
        "    |",
        "    |",
        " --- ",
        "|    ",
        "|    ",
        " --- "},
    {   " --- ",
        "    |",
        "    |",
        " --- ",
        "    |",
        "    |",
        " --- "},
    {   "     ",
        "|   |",
        "|   |",
        " --- ",
        "    |",
        "    |",
        "     "},
    {   " --- ",
        "|    ",
        "|    ",
        " --- ",
        "    |",
        "    |",
        " --- "},
    {   " --- ",
        "|    ",
        "|    ",
        " --- ",
        "|   |",
        "|   |",
        " --- "},
    {   " --- ",
        "    |",
        "    |",
        "     ",
        "    |",
        "    |",
        "     "},
    {   " --- ",
        "|   |",
        "|   |",
        " --- ",
        "|   |",
        "|   |",
        " --- "},
    {   " --- ",
        "|   |",
        "|   |",
        " --- ",
        "    |",
        "    |",
        " --- "}};

void printNum(int prev, int start_y, const char &c)
{
    int x, y = start_y;
    x = prev*6; // prev_num+gap
    for (int i=0;i<7;i++) {
        gotoxy(x,y++);
        cout << codes[(int)(c-'0')][i];
    }
}

void LEDprint(int num, int start_y = 0)
{
    stringstream is;
    string nums;
    is << num;
    is >> nums;
    for (size_t i=0;i }

void LEDprint(string nums, int start_y = 0)
{
    for (size_t i=0;i }

int main()
{
    LEDprint(1234567890);
    LEDprint("0123456",7);
    return 0;
}

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
3楼2013-03-14 22:15:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

感谢参与,应助指数 +1
字模里面0和1少了中间那一行,加上就行,
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2013-03-14 22:17:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 冰雨hust 的主题更新
信息提示
请填处理意见