#include #include #include class Number { char m_Number[7][5]; public: Number(unsigned int number) { fill(number); } void printNumber(int row, std::ostream& os) { for( int col = 0; col < 5; ++col ) os << m_Number[row][col]; } protected: void fill(unsigned int number) { for( int i = 0; i < 7; ++i ) for(int j =0; j < 5; ++j) m_Number[i][j] = ' '; switch( number ){ case 0: m_Number[0][0] = '+'; m_Number[0][1] = '-'; m_Number[0][2] = '-'; m_Number[0][3] = '-'; m_Number[0][4] = '+'; m_Number[1][0] = '|'; m_Number[1][4] = '|'; m_Number[2][0] = '|'; m_Number[2][4] = '|'; m_Number[3][0] = '+'; m_Number[3][4] = '+'; m_Number[4][0] = '|'; m_Number[4][4] = '|'; m_Number[5][0] = '|'; m_Number[5][4] = '|'; m_Number[6][0] = '+'; m_Number[6][1] = '-'; m_Number[6][2] = '-'; m_Number[6][3] = '-'; m_Number[6][4] = '+'; break; case 1: m_Number[0][4] = '+'; m_Number[1][4] = '|'; m_Number[2][4] = '|'; m_Number[3][4] = '+'; m_Number[4][4] = '|'; m_Number[5][4] = '|'; m_Number[6][4] = '+'; break; case 2: m_Number[0][0] = '+'; m_Number[0][1] = '-'; m_Number[0][2] = '-'; m_Number[0][3] = '-'; m_Number[0][4] = '+'; m_Number[1][4] = '|'; m_Number[2][4] = '|'; m_Number[3][0] = '+'; m_Number[3][1] = '-'; m_Number[3][2] = '-'; m_Number[3][3] = '-'; m_Number[3][4] = '+'; m_Number[4][0] = '|'; m_Number[5][0] = '|'; m_Number[6][0] = '+'; m_Number[6][1] = '-'; m_Number[6][2] = '-'; m_Number[6][3] = '-'; m_Number[6][4] = '+'; break; case 3: m_Number[0][0] = '+'; m_Number[0][1] = '-'; m_Number[0][2] = '-'; m_Number[0][3] = '-'; m_Number[0][4] = '+'; m_Number[1][4] = '|'; m_Number[2][4] = '|'; m_Number[3][0] = '+'; m_Number[3][1] = '-'; m_Number[3][2] = '-'; m_Number[3][3] = '-'; m_Number[3][4] = '+'; m_Number[4][4] = '|'; m_Number[5][4] = '|'; m_Number[6][0] = '+'; m_Number[6][1] = '-'; m_Number[6][2] = '-'; m_Number[6][3] = '-'; m_Number[6][4] = '+'; break; case 4: m_Number[0][0] = '+'; m_Number[0][4] = '+'; m_Number[1][0] = '|'; m_Number[1][4] = '|'; m_Number[2][0] = '|'; m_Number[2][4] = '|'; m_Number[3][0] = '+'; m_Number[3][1] = '-'; m_Number[3][2] = '-'; m_Number[3][3] = '-'; m_Number[3][4] = '+'; m_Number[4][4] = '|'; m_Number[5][4] = '|'; m_Number[6][4] = '+'; break; case 5: m_Number[0][0] = '+'; m_Number[0][1] = '-'; m_Number[0][2] = '-'; m_Number[0][3] = '-'; m_Number[0][4] = '+'; m_Number[1][0] = '|'; m_Number[2][0] = '|'; m_Number[3][0] = '+'; m_Number[3][1] = '-'; m_Number[3][2] = '-'; m_Number[3][3] = '-'; m_Number[3][4] = '+'; m_Number[4][4] = '|'; m_Number[5][4] = '|'; m_Number[6][0] = '+'; m_Number[6][1] = '-'; m_Number[6][2] = '-'; m_Number[6][3] = '-'; m_Number[6][4] = '+'; break; case 6: m_Number[0][0] = '+'; m_Number[0][1] = '-'; m_Number[0][2] = '-'; m_Number[0][3] = '-'; m_Number[0][4] = '+'; m_Number[1][0] = '|'; m_Number[2][0] = '|'; m_Number[3][0] = '+'; m_Number[3][1] = '-'; m_Number[3][2] = '-'; m_Number[3][3] = '-'; m_Number[3][4] = '+'; m_Number[4][0] = '|'; m_Number[4][4] = '|'; m_Number[5][0] = '|'; m_Number[5][4] = '|'; m_Number[6][0] = '+'; m_Number[6][1] = '-'; m_Number[6][2] = '-'; m_Number[6][3] = '-'; m_Number[6][4] = '+'; break; case 7: m_Number[0][0] = '+'; m_Number[0][1] = '-'; m_Number[0][2] = '-'; m_Number[0][3] = '-'; m_Number[0][4] = '+'; m_Number[1][4] = '|'; m_Number[2][4] = '|'; m_Number[3][4] = '+'; m_Number[4][4] = '|'; m_Number[5][4] = '|'; m_Number[6][4] = '+'; break; case 8: m_Number[0][0] = '+'; m_Number[0][1] = '-'; m_Number[0][2] = '-'; m_Number[0][3] = '-'; m_Number[0][4] = '+'; m_Number[1][0] = '|'; m_Number[1][4] = '|'; m_Number[2][0] = '|'; m_Number[2][4] = '|'; m_Number[3][0] = '+'; m_Number[3][1] = '-'; m_Number[3][2] = '-'; m_Number[3][3] = '-'; m_Number[3][4] = '+'; m_Number[4][0] = '|'; m_Number[4][4] = '|'; m_Number[5][0] = '|'; m_Number[5][4] = '|'; m_Number[6][0] = '+'; m_Number[6][1] = '-'; m_Number[6][2] = '-'; m_Number[6][3] = '-'; m_Number[6][4] = '+'; break; case 9: m_Number[0][0] = '+'; m_Number[0][1] = '-'; m_Number[0][2] = '-'; m_Number[0][3] = '-'; m_Number[0][4] = '+'; m_Number[1][0] = '|'; m_Number[1][4] = '|'; m_Number[2][0] = '|'; m_Number[2][4] = '|'; m_Number[3][0] = '+'; m_Number[3][1] = '-'; m_Number[3][2] = '-'; m_Number[3][3] = '-'; m_Number[3][4] = '+'; m_Number[4][4] = '|'; m_Number[5][4] = '|'; m_Number[6][0] = '+'; m_Number[6][1] = '-'; m_Number[6][2] = '-'; m_Number[6][3] = '-'; m_Number[6][4] = '+'; break; default: break; } } }; class Display { std::vector values; std::vector m_Display; public: Display() { initValues(); } ~Display() { } void addNumber(int number) { m_Display.push_back(number); } void initValues() { for(int i = 0; i < 10; ++i ) values.push_back( Number(i)); } void printClock(std::ostream& os) { for( int i = 0; i < 7; ++i ) { for( int j = 0; j < m_Display.size(); ++j ) { values[m_Display[j]].printNumber(i, os); os << " "; if( j == 1 ) { if( i == 2 || i == 4 ) os << "o "; else os << " "; } } os << std::endl; } } }; int main() { std::string strLine; while( true ) { std::getline(std::cin, strLine); if( strLine == "end" ) { std::cout << "end\n"; break; } else { Display clock; clock.addNumber(strLine[0] - '0'); clock.addNumber(strLine[1] - '0'); clock.addNumber(strLine[3] - '0'); clock.addNumber(strLine[4] - '0'); clock.printClock(std::cout); std::cout << "\n\n"; } } return 0; }