
i tried all data on my pc and it is right
but i still got a WA
please help me
i've considered
0 case
blanks
what else did i miss??
Moderator: Board moderators
void digitform(void)Dominik Michniewski wrote:Post me definiotion of your table and function , which initialize itI try to find your mistake
)
DM
Code: Select all
/* @JUDGE_ID: 29339ZA 706 C++ "Getting Started" */
#include<iostream.h>
#include <string>
#include <cmath>
using namespace std;
void display(int s, int n);
void displayHoriz(int row, int s, int digits[], int digitsLen);
void displayVert(int row, int s, int digits[], int digitsLen);
void main()
{
int s, n;
while (cin >> s >> n) {
if (s == 0 && n == 0) {
break;
}
display(s, n);
}
}
const char DIGITS[10][5][3] = {{{' ', '-', ' '}, // 0
{'|', ' ', '|'},
{' ', ' ', ' '},
{'|', ' ', '|'},
{' ', '-', ' '}},
{{' ', ' ', ' '}, // 1
{' ', ' ', '|'},
{' ', ' ', ' '},
{' ', ' ', '|'},
{' ', ' ', ' '}},
{{' ', '-', ' '}, // 2
{' ', ' ', '|'},
{' ', '-', ' '},
{'|', ' ', ' '},
{' ', '-', ' '}},
{{' ', '-', ' '}, // 3
{' ', ' ', '|'},
{' ', '-', ' '},
{' ', ' ', '|'},
{' ', '-', ' '}},
{{' ', ' ', ' '}, // 4
{'|', ' ', '|'},
{' ', '-', ' '},
{' ', ' ', '|'},
{' ', ' ', ' '}},
{{' ', '-', ' '}, // 5
{'|', ' ', ' '},
{' ', '-', ' '},
{' ', ' ', '|'},
{' ', '-', ' '}},
{{' ', '-', ' '}, // 6
{'|', ' ', ' '},
{' ', '-', ' '},
{'|', ' ', '|'},
{' ', '-', ' '}},
{{' ', '-', ' '}, // 7
{' ', ' ', '|'},
{' ', ' ', ' '},
{' ', ' ', '|'},
{' ', ' ', ' '}},
{{' ', '-', ' '}, // 8
{'|', ' ', '|'},
{' ', '-', ' '},
{'|', ' ', '|'},
{' ', '-', ' '}},
{{' ', '-', ' '}, // 9
{'|', ' ', '|'},
{' ', '-', ' '},
{' ', ' ', '|'},
{' ', '-', ' '}}};
void display(int s, int n) {
int digitsLen = int(log10(n)) + 1;
int* digits = new int[digitsLen];
int nn = n;
int i;
for (i = digitsLen - 1; i >= 0; i--) {
digits[i] = nn % 10;
nn /= 10;
}
for (i = 0; i < 5; i++) {
if (i % 2 == 0) {
displayHoriz(i, s, digits, digitsLen);
}
else {
displayVert(i, s, digits, digitsLen);
}
}
cout << endl;
}
void displayHoriz(int row, int s, int digits[], int digitsLen) {
for (int i = 0; i < digitsLen; i++) {
int digit = digits[i];
cout << ' ';
for (int j = 0; j < s; j++) {
cout << DIGITS[digit][row][1];
}
cout << ' ';
if (i < digitsLen - 1) {
cout << ' ';
}
}
cout << endl;
}
void displayVert(int row, int s, int digits[], int digitsLen) {
for (int k = 0; k < s; k++) {
for (int i = 0; i < digitsLen; i++) {
int digit = digits[i];
cout << DIGITS[digit][row][0];
for (int j = 0; j < s; j++) {
cout << ' ';
}
cout << DIGITS[digit][row][2];
if (i < digitsLen - 1) {
cout << ' ';
}
}
cout << endl;
}
}
Code: Select all
#include <iostream>
#include <vector>
#include <string>
using namespace std;
const int show[10][7] =
{
/*0*/ {1,1,1,1,1,1,0,},
/*1*/ {0,1,1,0,0,0,0,},
/*2*/ {1,1,0,1,1,0,1,},
/*3*/ {1,1,1,1,0,0,1,},
/*4*/ {0,1,1,0,0,1,1,},
/*5*/ {1,0,1,1,0,1,1,},
/*6*/ {1,0,1,1,1,1,1,},
/*7*/ {1,1,1,0,0,0,0,},
/*8*/ {1,1,1,1,1,1,1,},
/*9*/ {1,1,1,1,0,1,1,},
};
int main()
{
int size; char ch; vector<int> num; string yes,no;
cin >> size;
cin.get(ch);
for(int i=0;i<size;i++) {
yes+='-'; no+=' ';
}
cin.get(ch);
while(ch!='\n') {
num.push_back(int(ch)-48);
cin.get(ch);
}
while(size!=0 || num.size()>1 || num[0]!=0) {
if(size!=0) {
// top
for(int j=0;j<num.size();j++) {
cout << " ";
if(show[num[j]][0]) cout << yes;
else cout << no;
cout << " ";
if(j<num.size()-1) cout << " ";
}
cout << endl;
// below top
for(int m=0;m<size;m++) {
for(int n=0;n<num.size();n++) {
if(show[num[n]][5]) cout << "|";
else cout << " ";
cout << no;
if(show[num[n]][1]) cout << "|";
else cout << " ";
if(n<num.size()-1) cout << " ";
}
cout << endl;
}
// middle
for(int k=0;k<num.size();k++) {
cout << " ";
if(show[num[k]][6]) cout << yes;
else cout << no;
cout << " ";
if(k<num.size()-1) cout << " ";
}
cout << endl;
// below middle
for(int o=0;o<size;o++) {
for(int p=0;p<num.size();p++) {
if(show[num[p]][4]) cout << "|";
else cout << " ";
cout << no;
if(show[num[p]][2]) cout << "|";
else cout << " ";
if(p<num.size()-1) cout << " ";
}
cout << endl;
}
// bottom
for(int l=0;l<num.size();l++) {
cout << " ";
if(show[num[l]][3]) cout << yes;
else cout << no;
cout << " ";
if(l<num.size()-1) cout << " ";
}
cout << endl;
num.clear(); yes=""; no="";
cout << endl;
cin >> size;
cin.get(ch);
for(int q=0;q<size;q++) {
yes+='-'; no+=' ';
}
cin.get(ch);
while(ch!='\n') {
num.push_back(int(ch)-48);
cin.get(ch);
}
}
}
return 0;
}