AOJ - Problem 0128 : Abacus
入力した数値に対応するようなそろばんの配置を出力します。
あらかじめ数字(0-9)ごとの文字列のテーブルをつくっておいて各桁ごとに数字を見ていけばよい思います。
#include <iostream> #include <string> using namespace std; string f[10] = { "* = ****", "* =* ***", "* =** **", "* =*** *", "* =**** ", " *= ****", " *=* ***", " *=** **", " *=*** *", " *=**** " }; int main(){ string s; bool flag = false; while( cin >> s ){ string ans[10]; if( flag ){ cout << endl; }else{ flag = true; } while( s.size() < 5 ){ s = "0" + s; } for(int i=0 ; i < s.size() ; i++ ){ ans[i] = f[s[i]-'0']; } for(int x=0 ; x < 8 ; x++ ){ for(int y=0 ; y < s.size() ; y++ ){ cout << ans[y][x]; } cout << endl; } } }