Cod sursa(job #2368390)

Utilizator AsmarandeiCatalinAsmarandei Catalin AsmarandeiCatalin Data 5 martie 2019 15:52:10
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <queue>

using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");
char S[100010],*p = S;

int expresie();
int factor()
{
    int r;
    if(*p == '('){ ++p; r = expresie();++p;}
    else {
        r = 0;
        while('0' <= *p && *p <= '9'){r = r * 10 + *p - '0'; ++p;}
    }
    return r;
}

int termen(){
    int r = factor();
    while(*p == '*' || *p == '/')
    {
        switch(*p)
        {
            case '*': ++p; r*= factor(); break;
            case '/': ++p; r/= factor(); break;
        }
    }
    return r;
}

int expresie()
{
    int r = termen();
    while(*p == '+' || *p == '-')
        switch(*p)
    {
        case '+' : ++p; r+= termen();break;
        case '-' : ++p; r-= termen();break;
    }
    return r;
}

int main()
{
    f >> S;
    g << expresie();
    g.close();
    return 0;
}