Cod sursa(job #1045034)

Utilizator gapdanPopescu George gapdan Data 30 noiembrie 2013 19:50:36
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream>
using namespace std;
char p[100001];
int i;
fstream f("evaluare.in",ios::in);
fstream g("evaluare.out",ios::out);
int eval();
int termen();
int factor();
int nr();
int main()
{
    f.getline(p,100001);
    i=0;
    g<<eval()<<'\n';
    return 0;
}
int eval()
{
    int r=termen();
    while (p[i]=='+' || p[i]=='-')
    {
        if (p[i]=='+') {++i;r+=termen();}
            else {++i;r-=termen();}
    }
    return r;
}
int termen()
{
    int r=factor();
    while (p[i]=='*' || p[i]=='/')
    {
        if (p[i]=='*') {++i;r*=factor();}
            else {++i;r/=factor();}
    }
    return r;
}
int factor()
{
    int r;
    if (p[i]=='(') {++i;r=eval();++i;}
        else r=nr();
    return r;
}
int nr()
{
     int r=0;
    while(p[i]>='0'&& p[i]<='9')
    {
        r*=10;
        r+=p[i]-'0';
        ++i;
    }
    return r;
}