Cod sursa(job #3276379)

Utilizator iStefan703Bordei Stefan iStefan703 Data 13 februarie 2025 15:12:58
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include<fstream>
using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

char c[100001],*p=c;

long long termen();
long long factor();

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

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

long long factor()
{
    long long r=0;
    if(*p=='(')
    {
        ++p;
        r=evaluare();
        ++p;
    }
    while(*p>='0'&&*p<='9')
    {
        r=r*10+(*p-'0');
        ++p;
    }
    return r;
}
int main()
{
    f.get(c,100001);
    g<<evaluare();
}