Cod sursa(job #813435)

Utilizator bodyionitaIonita Bogdan Constantin bodyionita Data 15 noiembrie 2012 15:47:15
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <cstdio>
#include <cstring>
#include <cctype>
using namespace std;
char t[2],s[100001],polon[100001][10],oper[100001];
int i,n,y,x;
int main()
{
    freopen("eval.in","r",stdin);
    freopen("eval.out","w",stdout);
    gets(s+1);
    n=strlen(s+1);
    for (i=1;i<=n;i++)
        if (isdigit(s[i]))
        {
            if (isdigit(s[i-1])) {t[0]=s[i];strcpy(polon[x],t);} else x++;
        }
        else
        {
            if (s[i]=='(') oper[++y]='(';
            else if (s[i]=='*') oper[++y]='*';
            else if (s[i]=='/') oper[++y]='/';
            else if (s[i]=='+'|| s[i]=='-')
            {
                while (oper[y]=='*'||oper[y]=='/')
                    polon[++x][0]=oper[y--];
                oper[++y]=s[i];
            }
            else if (s[i]==')')
            {
                while (oper[y]!='(')
                    polon[++x][0]=oper[y--];
                y--;
            }
        }
    for (i=1;i<=x;i++)
    printf("%s",polon[i]);
    return 0;
}