반응형

숫자(1~99,999)와 디스플레이 크기(1~10) s를 입력하면 [(2s+3)행 X (s+2)열] 크기의 디지털 숫자로 표시하는 프로그램을 만들어 보자. 각 숫자 사이에는 1줄의 공백이 있다.


숫자 5,238을 s=1의 크기로 표시한 예.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <iostream>
 
using namespace std;
 
int main()
{
    const int MAX_DIGIT = 5;
    const int MAX_SCALE = 10;
 
    char hor_bar[2][MAX_SCALE + 1= { {"          "}, {"----------"} };
    char ver_bar[2][2= { {" "}, {"|"} };
 
    char hor_dig[10][3= { {101}, {000}, {111}, {111}, {010},
        {111}, {111}, {100}, {111}, {111} };    // 0~9
    char ver_dig[10][4= { {1111}, {0101}, {0110}, {0101}, {1101},
        {1001}, {1011}, {0101}, {1111}, {1101} };    // 0~9
    //  -
    // | |
    //  -
    // | |
    //  -
    // 1 digit = 가로선 3개(3줄), 세로선 4개(2줄)
    //             최소 5행 3열
 
    char digits[5][(MAX_SCALE + 3* MAX_DIGIT] = { '\0', };    // 각 숫자 사이에 빈칸 + 마지막 개행 문자 = MAX_SCALE + 3.
                                                                // null문자 '\0'으로 초기화.
    char number[MAX_DIGIT + 1];
    cout << "Enter number(1~99,999): ";
    cin >> number;
 
    int scale;
    cout << "Enter scale(1~10): ";
    cin >> scale;
 
    // scale에 맞게 가로선 길이 조정.
    hor_bar[0][scale] = '\0';
    hor_bar[1][scale] = '\0';
 
    int count_number = strlen(number);
 
    for (int i = 0; i < count_number; i++)
    {
        int real_number = number[i] - '0';    // 문자를 숫자로 변환.
 
        // 두 번째 숫자부터 각 숫자마다 빈 칸 삽입.
        if (i > 0)
            for (int j = 0; j < 5; j++)
                strcat_s(digits[j], sizeof(digits[j]), " ");
 
        // 첫 번째 줄 삽입.
        strcat_s(digits[0], sizeof(digits[0]), " ");
        strcat_s(digits[0], sizeof(digits[0]), hor_bar[hor_dig[real_number][0]]);
        strcat_s(digits[0], sizeof(digits[0]), " ");
 
        // 두 번째 줄 삽입.
        strcat_s(digits[1], sizeof(digits[1]), ver_bar[ver_dig[real_number][0]]);
        strcat_s(digits[1], sizeof(digits[1]), hor_bar[0]);
        strcat_s(digits[1], sizeof(digits[1]), ver_bar[ver_dig[real_number][1]]);
 
        // 세 번째 줄 삽입.
        strcat_s(digits[2], sizeof(digits[2]), " ");
        strcat_s(digits[2], sizeof(digits[2]), hor_bar[hor_dig[real_number][1]]);
        strcat_s(digits[2], sizeof(digits[2]), " ");
 
        // 네 번째 줄 삽입.
        strcat_s(digits[3], sizeof(digits[3]), ver_bar[ver_dig[real_number][2]]);
        strcat_s(digits[3], sizeof(digits[3]), hor_bar[0]);
        strcat_s(digits[3], sizeof(digits[3]), ver_bar[ver_dig[real_number][3]]);
 
        // 다섯 번째 줄 삽입.
        strcat_s(digits[4], sizeof(digits[4]), " ");
        strcat_s(digits[4], sizeof(digits[4]), hor_bar[hor_dig[real_number][2]]);
        strcat_s(digits[4], sizeof(digits[4]), " ");
    }
 
    // 첫 번째 줄 출력
    cout << digits[0<< endl;
 
    // 두 번째 줄 출력
    for (int i = 0; i < scale; i++)
        cout << digits[1<< endl;
 
    // 세 번째 줄 출력
    cout << digits[2<< endl;
 
    // 네 번째 줄 출력
    for (int i = 0; i < scale; i++)
        cout << digits[3<< endl;
 
    // 다섯 번째 줄 출력
    cout << digits[4<< endl;
 
    return 0;
}


잘못된 입력에 대한 처리는 생략되어 있다.


실행 결과.



반응형
Posted by J-sean
:
반응형

라즈베리 파이를 이용한 여러가지 프로젝트를 진행하기 전에 쓸만한 디스플레이를 고르기 위해 AliExpress에서 7인치 디스플레이를 주문 했다. 다른 제품보다 충격에 민감할 수 밖에 없는 제품이기에 배송이 걱정 되었지만 사이즈가 작으니 포장만 잘 하면 문제 없이 도착할거라 생각했다.


우체국택배를 통해 배송 되었다.


박스를 열어 보니 다행히 나름 깔끔하게 잘 포장되어 있었다.


7 inch HD Display Screen. 해상도는 1024X600이다.


LCD Driver. 여기에 다른 부품들을 연결 한다.



디스플레이의 소스, 화면 상태등을 조정할 수 있는 보드. 상품 설명에는 Key Board라는 이름으로 소개 되어 있고 SOURCE, MENU, POWER등 5개의 버튼이 달려 있다.


디스플레이 리모컨, 5V USB 전원 케이블, Key Board 케이블


Key Board 케이블을 Key Board와 LCD Driver에 연결 한다. 굉장히 뻑뻑해서 한 번 연결되면 분리하기 어렵다.


디스플레이의 Flat Flexible Cable을 LCD Driver에 연결 한다. 더 들어갈거 같은데.. 라는 생각이 들 정도만 들어 간다.



5V 전원과 컴퓨터등의 소스를 연결한다. HDMI, D-Sub, Composite Video 케이블 연결이 가능 하다.


상품 소개에 나오는 각 포트 설명


케이블 연결이 잘 되었다면 특별히 설정할 건 없다. 소스로 연결한 기기를 켜면 일반 모니터와 동일하게 작동 한다. 레트로파이를 설치한 라즈베리 파이에 연결하고 Bubble Bobble을 실행했다.


Metal Slug 실행 화면. 7인치 디스플레이기 때문에 14인치 노트북의 절반 크기도 안된다.



노트북에 연결한 화면. 노트북 디스플레이의 내용도 잘 표시 된다. Key Board의 녹색 불빛은 생각보다 밝다.


구매 비용은 $24로 3만원이 좀 안되는 가격에 무료 배송이다. 저렴한 가격이지만 생각보다 괜찮은 성능을 보여 주는 제품으로 여러가지 프로젝트에 응용 가능할 것으로 생각되며 이 제품보다 약간 큰 9인치나 10.1인치도 구매해 보고 싶은 생각이 들 정도로 만족스러웠다.


반응형
Posted by J-sean
: