计算器的新功能


当你学一些可视化程序设计语言时,老师经常会让你设计并且编程做出一个计算器,这时也许你会仿照windows系统自带的计算器外观和功能去设计,但是现在老师要你多做出一个有新功能的计算器,实现当输入一个数时,能够将这个数分解成一个或多个素因子乘积的形式,并按素因子的大小排列显示出来。大家对计算器中数的表示应该很清楚的。下面显示出了0 — 9这十个数字的表示形式。每个数字都占据5 * 3大小的字符区域


你能实现这个新功能吗?试试看吧!

输入

 

输入有多组测试数据,每组包括一个正整数n(1 < n <= 1000000)。

 

样例输入

 

10

2

 

输出

 

对于每个数,将它分解成若干个素数乘积的形式,并按从小到大的顺序输出,素因子之间用“ * ”的形式连接。

 

样例输出

 

 -     -

  |   |

 -  *  -

|       |

 -     -

 

 -

  |

 -

|

 -

 

时间限制C/C++语言:1000MS其它语言:3000MS
内存限制
C/C++语言:65536KB其它语言:589824KB
#include<iostream>
#include<stdio.h>
using namespace std;

char arr[5][1000];
int pos = 0;

void printMultiSign() {
    if (pos != 0) {
        arr[0][pos] = ' ';
        arr[1][pos] = ' ';
        arr[2][pos] = '*';
        arr[3][pos] = ' ';
        arr[4][pos++] = ' ';
    }
}

void NumToArray(int i)
{
    int tmp = 1;
    while (i / tmp / 10 != 0) { //需要从首位开始输出
        tmp *= 10;
    };
    printMultiSign();

    while (tmp != 0) {
        int t = i / tmp % 10;
        tmp = tmp / 10;
        switch (t) {
        case 0 :
            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = '-';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 1 :
            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 2 :
            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = '-';
            arr[3][pos] = ' ';
            arr[4][pos++] = '-';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';
            break;
        case 3 :
            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = '-';
            arr[3][pos] = ' ';
            arr[4][pos++] = '-';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 4 :
            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = '-';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 5 :
            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = '-';
            arr[3][pos] = ' ';
            arr[4][pos++] = '-';

            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 6 :
            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = '-';
            arr[3][pos] = ' ';
            arr[4][pos++] = '-';

            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 7 :
            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 8 :
            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = '-';
            arr[3][pos] = ' ';
            arr[4][pos++] = '-';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 9 :
            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = '-';
            arr[3][pos] = ' ';
            arr[4][pos++] = '-';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        }
    }
}

void printArray() {
    arr[0][pos] = '\0';
    arr[1][pos] = '\0';
    arr[2][pos] = '\0';
    arr[3][pos] = '\0';
    arr[4][pos] = '\0';
    pos = 0;
    cout << arr[0] << endl;
    cout << arr[1] << endl;
    cout << arr[2] << endl;
    cout << arr[3] << endl;
    cout << arr[4] << endl;
}

void sushu(int num)
{
    int i;
    for(i=2;i<num;)
    {
        if(num%i==0)
        {
            NumToArray(i);
            num=num/i;
            i=2;
        }
        else
            i++;
    }
    NumToArray(i);
}

int main()
{
    int num;
    while(cin>>num)
    {
        sushu(num);
        printArray();
    }
}

 

posted @ 2017-04-25 17:18  home普通的人  阅读(379)  评论(0编辑  收藏  举报