706 - LC-Display

All about problems in Volume VII. If there is a thread about your problem, please use it. If not, create one with its number in the subject.

Moderator: Board moderators

Re: 706 - LC-Display

Postby pqv » Fri Dec 31, 2010 6:43 pm

I give up! and I salute those who got accepted by the judge!

Don't know what more to do.

Can I assume that each input line consist of 2 numbers? Or do I need to worry about inputs like

Code: Select all
1 234
1
3 456
0 0

Can I assume that the input are within the range specified 0 - 10 for first number and 0 - 99 999 999 for the second number? Or do I need to worry about boundary checks, and if I need how should too big numbers be handled? cutoff at limit, don't print anything?

How should this input case be handled? (x is a number)
Code: Select all
0 x


Should I terminate or process it as normal? By normal I mean print out an empty 2 columns 3 rows filled with blanks for each digit in x and 1 column of blanks between each digit.
I choosed to process as normal.

How is the input formatted? Do I need to worry about delimeters, white spaces?
Examples.

12345678
12, 345, 678
12. 345. 678
12 345 678
According to specification the format is 99, 999, 999 but in the sample input they write like
Code: Select all
2 12345
3 67890
0 0

I am confused!!

A sample input for my program
Code: Select all
1 123456
2 7890
3 009
0 0


output

Code: Select all
.....-...-.......-...-.
..|...|...|.|.|.|...|..
.....-...-...-...-...-.
..|.|.....|...|...|.|.|
.....-...-.......-...-.

.--...--...--...--.
...|.|..|.|..|.|..|
...|.|..|.|..|.|..|
......--...--......
...|.|..|....|.|..|
...|.|..|....|.|..|
......--...--...--.

.---...---...---.
|...|.|...|.|...|
|...|.|...|.|...|
|...|.|...|.|...|
.............---.
|...|.|...|.....|
|...|.|...|.....|
|...|.|...|.....|
.---...---...---.


I use Java and '|' '-' ' ', I have replaced ' ' with '.' here for better vision.

Have i missed something? I give up!
pqv
New poster
 
Posts: 1
Joined: Fri Dec 31, 2010 5:55 pm

Re: 706 - LC-Display

Postby jfvs » Sun Apr 24, 2011 11:29 am

hi everyone

I dont know if you already solved your problem with this WA... as a tip to solve it, check carefully your condition to make your program stop, maybe you're not prossessing the whole input (that was my problem)

Also, for those claiming that you dont need a extra space after the last test case... thats surely wrong, I got PE without that extra space

Hope this helps
jfvs
New poster
 
Posts: 12
Joined: Wed Feb 02, 2011 10:40 am

Re: 706 - LC-Display

Postby 5442632 » Sun Aug 07, 2011 12:44 pm

I have thought hard to deal with the WA

but it's still not working

can somebody tell we where I did wrong and send email to c871111116@hotmail.com to me?

please

Code: Select all
#include<iostream>
#include<cstring>
using namespace std;
class LC{
    private:

    char **display;

    int len;//cal the length of n

    int perone;

    int high,width;

    int *num;

    void count_digit(int n){
        len=1;
        while(1){
            n=n/10;
            if(n==0){
                break;
            }
            len++;
        }
    }

    void copy_into_array(int n){
        for(int i=len-1;i>=0;i--){
            num[i]=n%10;
            n=n/10;
        }
    }
    //below,a is the start position (width*width)
    void zero(int a){
        for(int i=1;i<=perone;i++){
            display[0][a+i]='-';
            display[i][a]='|';
            display[perone+1+i][a]='|';
            display[high-1][a+i]='-';
            display[i][a+perone+1]='|';
            display[perone+1+i][a+perone+1]='|';
        }

    }

    void one(int a){
        for(int i=1;i<=perone;i++){
            display[i][a+perone+1]='|';
            display[perone+1+i][a+perone+1]='|';
        }
    }

    void two(int a){
        for(int i=1;i<=perone;i++){
            display[0][a+i]='-';
            display[perone+1][a+i]='-';
            display[perone+1+i][a]='|';
            display[high-1][a+i]='-';
            display[i][a+perone+1]='|';
        }
    }

    void three(int a){
        for(int i=1;i<=perone;i++){
            display[0][a+i]='-';
            display[perone+1][a+i]='-';
            display[high-1][a+i]='-';
            display[i][a+perone+1]='|';
            display[perone+1+i][a+perone+1]='|';
        }
    }

    void four(int a){
        for(int i=1;i<=perone;i++){
            display[i][a]='|';
            display[perone+1][a+i]='-';
            display[i][a+perone+1]='|';
            display[perone+1+i][a+perone+1]='|';
        }
    }

    void five(int a){
        for(int i=1;i<=perone;i++){
            display[0][a+i]='-';
            display[i][a]='|';
            display[perone+1][a+i]='-';
            display[high-1][a+i]='-';
            display[perone+1+i][a+perone+1]='|';
        }
    }

    void six(int a){
        for(int i=1;i<=perone;i++){
            display[0][a+i]='-';
            display[i][a]='|';
            display[perone+1][a+i]='-';
            display[perone+1+i][a]='|';
            display[high-1][a+i]='-';
            display[perone+1+i][a+perone+1]='|';
        }
    }

    void seven(int a){
        for(int i=1;i<=perone;i++){
            display[0][a+i]='-';
            display[i][a+perone+1]='|';
            display[perone+1+i][a+perone+1]='|';
        }
    }

    void eight(int a){
        for(int i=1;i<=perone;i++){
            display[0][a+i]='-';
            display[i][a]='|';
            display[perone+1][a+i]='-';
            display[perone+1+i][a]='|';
            display[high-1][a+i]='-';
            display[i][a+perone+1]='|';
            display[perone+1+i][a+perone+1]='|';
        }
    }

    void nine(int a){
    for(int i=1;i<=perone;i++){
            display[0][a+i]='-';
            display[i][a]='|';
            display[perone+1][a+i]='-';
            display[high-1][a+i]='-';
            display[i][a+perone+1]='|';
            display[perone+1+i][a+perone+1]='|';
        }
    }

    public:

    LC(int m,int n){
        high=2*m+3;
        count_digit(n);
        width=len*(m+2);
        perone=m;
        display=new char*[high];
        for(int i=0;i<high;i++){
            display[i]=new char[width];
        }
        for(int i=0;i<high;i++){
            for(int j=0;j<width;j++){
                display[i][j]=' ';
            }
        }
        num=new int[len];
        copy_into_array(n);
    }

    ~LC(){
        for(int i=0;i<high;i++){
            delete []display[i];
        }
        delete []display;
        delete []num;
    }

    void put(){
        int k=0;
        for(int i=0;i<width;){
            if(num[k]==0){
                zero(i);
            }
            else if(num[k]==1){
                one(i);
            }
            else if(num[k]==2){
                two(i);
            }
            else if(num[k]==3){
                three(i);
            }
            else if(num[k]==4){
                four(i);
            }
            else if(num[k]==5){
                five(i);
            }
            else if(num[k]==6){
                six(i);
            }
            else if(num[k]==7){
                seven(i);
            }
            else if(num[k]==8){
                eight(i);
            }
            else{
                nine(i);
            }
            k=k+1;
            i=i+perone+2;
        }
    }

    void show(){
        for(int i=0;i<high;i++){
            for(int j=0;j<width;j++){
                cout<<display[i][j];
            }
            cout<<endl;
        }
    }
};

int main(){
   int a,b;
   while(cin>>a>>b){
       if(a==0 && b==0){
           break;
       }
       if(a==0 || a>10 || b>99999999 || a<1 || b<0){
           continue;
       }
       LC output(a,b);
       output.put();//put every number in LC way
       output.show();
   }
}
5442632
New poster
 
Posts: 1
Joined: Sun Aug 07, 2011 12:39 pm

Please help!

Postby SeyedParsa » Sat Nov 26, 2011 8:19 pm

Removed after AC
SeyedParsa
New poster
 
Posts: 2
Joined: Sat Nov 26, 2011 8:15 pm

"cout" cause "Runtime Error"

Postby gjbenny » Sun Mar 18, 2012 8:47 am

I have tried many times, but I still got RE. Who can tell me why? I test my code and it seems that "cout" in "print" function casuse the problem. I tried to delete some "cout" in the function and I got WA. Need for HELP!! :roll:

Here is my code:

Code: Select all
#include<iostream>
#include<cstdlib>
using namespace std;

void print(int i , int j , int size , int n[] , int c);

bool test(int num , int part);

int main()
{
    int size ;

    while(cin>>size&&size)
    {
        int n[8] , c=0 ;
        char a ;

        cin.get(a);

        while(cin.get(a)&&(a!='\n'))
        {
            n[c]=a-48;

            c++;
        }

        for(int i=1;i<=(2*size+3);i++)
        {
            for(int j=0;j<c;j++)
            {
                print(i , j , size , n , c);

                if(j<c-1)cout<<" ";
            }

            cout<<endl;
        }

        cout<<endl;
    }

    return 0;
}

void print(int i , int j , int size , int n[] , int c)
{
    if(i==1)
    {
        cout<<" ";

        if(test(n[j] , 1))
        {
            for(int i=1;i<=size;i++)
            {
                cout<<"-";
            }
        }
        else
        {
            for(int i=1;i<=size;i++)
            {
                cout<<" ";
            }
        }

        cout<<" ";
    }
    else if(i<(size+2))
    {
        if(test(n[j] , 2))cout<<"|";
        else cout<<" ";

        for(int i=1;i<=size;i++)cout<<" ";

        if(test(n[j] , 3))cout<<"|";
        else cout<<" ";
    }
    else if(i==(size+2))
    {
        cout<<" ";

        if(test(n[j] , 4))
        {
            for(int i=1;i<=size;i++)
            {
                cout<<"-";
            }
        }
        else
        {
            for(int i=1;i<=size;i++)
            {
                cout<<" ";
            }
        }

        cout<<" ";
    }
    else if(i<(2*size+3))
    {
        if(test(n[j] , 5))cout<<"|";
        else cout<<" ";

        for(int i=1;i<=size;i++)cout<<" ";

        if(test(n[j] , 6))cout<<"|";
        else cout<<" ";
    }
    else
    {
        cout<<" ";

        if(test(n[j] , 7))
        {
            for(int i=1;i<=size;i++)
            {
                cout<<"-";
            }
        }
        else
        {
            for(int i=1;i<=size;i++)
            {
                cout<<" ";
            }
        }

        cout<<" ";
    }
}

bool test(int num , int part)
{
    switch(num)
    {
        case 0:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 1;
                case 3:
                    return 1;
                case 4:
                    return 0;
                case 5:
                    return 1;
                case 6:
                    return 1;
                case 7:
                    return 1;
            }
        case 1:
            switch(part)
            {
                case 1:
                    return 0;
                case 2:
                    return 0;
                case 3:
                    return 1;
                case 4:
                    return 0;
                case 5:
                    return 0;
                case 6:
                    return 1;
                case 7:
                    return 0;
            }
        case 2:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 0;
                case 3:
                    return 1;
                case 4:
                    return 1;
                case 5:
                    return 1;
                case 6:
                    return 0;
                case 7:
                    return 1;
            }
        case 3:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 0;
                case 3:
                    return 1;
                case 4:
                    return 1;
                case 5:
                    return 0;
                case 6:
                    return 1;
                case 7:
                    return 1;
            }
        case 4:
            switch(part)
            {
                case 1:
                    return 0;
                case 2:
                    return 1;
                case 3:
                    return 1;
                case 4:
                    return 1;
                case 5:
                    return 0;
                case 6:
                    return 1;
                case 7:
                    return 0;
            }
        case 5:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 1;
                case 3:
                    return 0;
                case 4:
                    return 1;
                case 5:
                    return 0;
                case 6:
                    return 1;
                case 7:
                    return 1;
            }
        case 6:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 1;
                case 3:
                    return 0;
                case 4:
                    return 1;
                case 5:
                    return 1;
                case 6:
                    return 1;
                case 7:
                    return 1;
            }
        case 7:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 0;
                case 3:
                    return 1;
                case 4:
                    return 0;
                case 5:
                    return 0;
                case 6:
                    return 1;
                case 7:
                    return 0;
            }
        case 8:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 1;
                case 3:
                    return 1;
                case 4:
                    return 1;
                case 5:
                    return 1;
                case 6:
                    return 1;
                case 7:
                    return 1;
            }
        case 9:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 1;
                case 3:
                    return 1;
                case 4:
                    return 1;
                case 5:
                    return 0;
                case 6:
                    return 1;
                case 7:
                    return 1;
            }
    }

    exit(1);
}
gjbenny
New poster
 
Posts: 2
Joined: Sun Mar 18, 2012 8:31 am

Re: 706 - LC-Display

Postby gjbenny » Mon Mar 19, 2012 3:09 pm

I found my problem is not just caused by "cout". I changed the way to get the input, and it became AC. Who can tell me why?

Here is my code:

Code: Select all
#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;

void print(int i , int j , int size , string n , int c);

bool test(int num , int part);

int main()
{
    int size ;

    while(cin>>size&&size)
    {
        int c ;

        string n;

        cin>>n;

        for(int i=0;i<n.length();i++)
        {
            n[i]-=48;
        }

        c=n.length();

        for(int i=1;i<=(2*size+3);i++)
        {
            for(int j=0;j<c;j++)
            {
                print(i , j , size , n , c);

                if(j<c-1)cout<<" ";
            }

            cout<<endl;
        }

        cout<<endl;
    }

    return 0;
}

void print(int i , int j , int size , string n , int c)
{
    if(i==1)
    {
        cout<<" ";

        if(test(n[j] , 1))
        {
            for(int i=1;i<=size;i++)
            {
                cout<<"-";
            }
        }
        else
        {
            for(int i=1;i<=size;i++)
            {
                cout<<" ";
            }
        }

        cout<<" ";
    }
    else if(i<(size+2))
    {
        if(test(n[j] , 2))cout<<"|";
        else cout<<" ";

        for(int i=1;i<=size;i++)cout<<" ";

        if(test(n[j] , 3))cout<<"|";
        else cout<<" ";
    }
    else if(i==(size+2))
    {
        cout<<" ";

        if(test(n[j] , 4))
        {
            for(int i=1;i<=size;i++)
            {
                cout<<"-";
            }
        }
        else
        {
            for(int i=1;i<=size;i++)
            {
                cout<<" ";
            }
        }

        cout<<" ";
    }
    else if(i<(2*size+3))
    {
        if(test(n[j] , 5))cout<<"|";
        else cout<<" ";

        for(int i=1;i<=size;i++)cout<<" ";

        if(test(n[j] , 6))cout<<"|";
        else cout<<" ";
    }
    else
    {
        cout<<" ";

        if(test(n[j] , 7))
        {
            for(int i=1;i<=size;i++)
            {
                cout<<"-";
            }
        }
        else
        {
            for(int i=1;i<=size;i++)
            {
                cout<<" ";
            }
        }

        cout<<" ";
    }
}

bool test(int num , int part)
{
    switch(num)
    {
        case 0:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 1;
                case 3:
                    return 1;
                case 4:
                    return 0;
                case 5:
                    return 1;
                case 6:
                    return 1;
                case 7:
                    return 1;
            }
        case 1:
            switch(part)
            {
                case 1:
                    return 0;
                case 2:
                    return 0;
                case 3:
                    return 1;
                case 4:
                    return 0;
                case 5:
                    return 0;
                case 6:
                    return 1;
                case 7:
                    return 0;
            }
        case 2:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 0;
                case 3:
                    return 1;
                case 4:
                    return 1;
                case 5:
                    return 1;
                case 6:
                    return 0;
                case 7:
                    return 1;
            }
        case 3:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 0;
                case 3:
                    return 1;
                case 4:
                    return 1;
                case 5:
                    return 0;
                case 6:
                    return 1;
                case 7:
                    return 1;
            }
        case 4:
            switch(part)
            {
                case 1:
                    return 0;
                case 2:
                    return 1;
                case 3:
                    return 1;
                case 4:
                    return 1;
                case 5:
                    return 0;
                case 6:
                    return 1;
                case 7:
                    return 0;
            }
        case 5:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 1;
                case 3:
                    return 0;
                case 4:
                    return 1;
                case 5:
                    return 0;
                case 6:
                    return 1;
                case 7:
                    return 1;
            }
        case 6:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 1;
                case 3:
                    return 0;
                case 4:
                    return 1;
                case 5:
                    return 1;
                case 6:
                    return 1;
                case 7:
                    return 1;
            }
        case 7:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 0;
                case 3:
                    return 1;
                case 4:
                    return 0;
                case 5:
                    return 0;
                case 6:
                    return 1;
                case 7:
                    return 0;
            }
        case 8:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 1;
                case 3:
                    return 1;
                case 4:
                    return 1;
                case 5:
                    return 1;
                case 6:
                    return 1;
                case 7:
                    return 1;
            }
        case 9:
            switch(part)
            {
                case 1:
                    return 1;
                case 2:
                    return 1;
                case 3:
                    return 1;
                case 4:
                    return 1;
                case 5:
                    return 0;
                case 6:
                    return 1;
                case 7:
                    return 1;
            }
    }

    exit(1);
}
gjbenny
New poster
 
Posts: 2
Joined: Sun Mar 18, 2012 8:31 am

Re: Solved!

Postby Fedaykin » Fri Feb 01, 2013 9:58 pm

fabiofabris wrote:I finally made it!!!

Some considerations about this problem:
- X 0001 should print 1
- X 0000 should print 0
that you are printing a blank column BETWEEN digits.

I think this input is kinnda trick...


This helped me to get ac
Fedaykin
New poster
 
Posts: 6
Joined: Sun Dec 09, 2012 9:27 pm

Previous

Return to Volume VII

Who is online

Users browsing this forum: No registered users and 1 guest