#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] = { {1, 0, 1}, {0, 0, 0}, {1, 1, 1}, {1, 1, 1}, {0, 1, 0},
{1, 1, 1}, {1, 1, 1}, {1, 0, 0}, {1, 1, 1}, {1, 1, 1} }; // 0~9
char ver_dig[10][4] = { {1, 1, 1, 1}, {0, 1, 0, 1}, {0, 1, 1, 0}, {0, 1, 0, 1}, {1, 1, 0, 1},
{1, 0, 0, 1}, {1, 0, 1, 1}, {0, 1, 0, 1}, {1, 1, 1, 1}, {1, 1, 0, 1} }; // 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;
}