Cod sursa(job #1060591)

Utilizator cosmin_bobeicaCosmin Bobeica cosmin_bobeica Data 18 decembrie 2013 10:01:04
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.76 kb
#include<cstdio>
using namespace std;

struct ura
{
    int info;
    ura *next;
    ura(){info=0;next=NULL;}
    ura(int a){info=a,next=NULL;}
};
ura *s=new ura();

void push_stack(ura **s,int val)
{
    ura *x=new ura(val);
    x->next=*s;
    (*s)=x;
};

void *pop_stack(ura **s)
{
    ura*x=*s;
    (*s)=(*s)->next;
    return x;
};

int main()
{
    freopen("editor.in","r",stdin);
    freopen("editor.out","w",stdout);
    int n,ok,add=0;
    char ch;
    scanf("%d\n", &n);
    while(s!=NULL)
        pop_stack(&s);
    for(int i=1; i<=n; i++)
    {
        ok=1;
        add=0;
        scanf("%c",&ch);
        while(ch!='\n')
        {
            if(ch=='[' || ch=='(' )
            {
                push_stack(&s,ch);
                add=1;
            }
            if(ch==']' || ch==')' )
            {
                if(ch==']')
                    if(s->info=='[')
                        if(s!=NULL)
                            pop_stack(&s);
                        else
                            ok=0;

                else
                    if(ch==')')
                        if(s->info=='(')
                            if(s!=NULL)
                                pop_stack(&s);
                            else
                                ok=0;
            }
            if(ch=='*')
            {
                if(s!=NULL)
                    pop_stack(&s);
                if(add==1)
                    ok=0;
            }
            if(ch=='E')
                if(s==NULL && ok==1)
                    printf(":)\n");
                else
                    printf(":(\n");
            scanf("%c",&ch);
        }
        while(s!=NULL)
            pop_stack(&s);
    }
    return 0;
}