Cod sursa(job #914469)

Utilizator dragangabrielDragan Andrei Gabriel dragangabriel Data 14 martie 2013 10:07:13
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<cstdio>
#include<cstring>
#define maxn 100010
using namespace std;
char s[maxn], *p=s;
 
int grad1();
int grad2();
int numar();
 
int grad1()
{
    int r=grad2();
    while(*p == '+' || *p =='-' )
        if(*p == '+')
            ++p,r += grad2();
        else
            ++p,r -= grad2();
    return r;
}
 
int grad2()
{
    int r=numar();
    while(*p == '*' || *p =='/')
        if(*p == '*')
            ++p,r *= numar();
        else
            ++p,r /= numar();
    return r;
}
 
int numar()
{
    int r=0;
    if(*p == '(')
        ++p,r =grad1(),++p;
    else
        while(*p>='0' && *p<='9')
            r = r*10 + *p - '0', ++p;
    return r;
}
 
int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    gets(s);
    printf("%d\n",grad1());
    return 0;
}