Cod sursa(job #1242966)

Utilizator roxannemafteiuMafteiu-Scai Roxana roxannemafteiu Data 15 octombrie 2014 12:40:37
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <cstdio>
#include <cstring>

FILE *in,*out;

using namespace std;

char op[4][4]={ "+-", "*/", "^", "" };
char s[100010];
char *t=s;

int eval(int prim, int doi, char o)
{
    switch(o)
    {
        case '+': return prim+doi;
        case '-': return prim-doi;
        case '*': return prim*doi;
        case '/': return prim/doi;
    }
}

int expr (int semn)
{
    int a,b;
    if(semn == 2)
    {
       if(*t == '(')
        {
            ++t;
            a=expr(0);
            ++t;
        }
       else
       {
            for(a=0; *t>='0' && *t<='9'; ++t)
                a = a * 10 + *t - '0';
       }
    }
    else
        for(a = expr(semn+1); strchr(op[semn], *t); a = b )
             b = eval( a, expr(semn+1), *t++ );

    return a;
}
int main()
{
    in=fopen("evaluare.in", "rt");
    fgets(s,100010, in);
    fclose(in);

    out=fopen("evaluare.out","wt");
    fprintf(out,"%d ", expr(0));
    fclose(out);
    return 0;
}