Cod sursa(job #2734835)

Utilizator HaiduculAndrei Popa Haiducul Data 1 aprilie 2021 14:43:00
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[100010],*p=s;
int termen();
int factor();
int expresie()
{   int r=termen();
    while(*p=='+' or *p=='-')
        switch(*p)
        {   case '+' : ++p; r+=termen(); break;
            case '-' : ++p; r-=termen(); break;
        }
    return r;
}
int termen()
{   int r=factor();
    while(*p=='+' or *p=='-')
        switch(*p)
        {   case '*' : ++p; r*=termen(); break;
            case '/' : ++p; r/=termen(); break;
        }
    return r;
}
int factor()
{   int r;
    if(*p=='(')
    {   p++;
        r=expresie();
        p++;
    }
    else
    {   int r=0;
        while('0'<=*p and *p<='9')
        {   r=r*10+*p-'0';
            ++p;
        }
    }
    return r;
}
int main()
{   f>>s;
    g<<expresie();
    g.close();
    f.close();
    return 0;
}