Cod sursa(job #3276749)

Utilizator suzanicaSuzanica Mihu suzanica Data 14 februarie 2025 13:29:07
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include<fstream>
using namespace std;

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

char c[10000001],*p=c;
long termen();
long factor();
long eval();

long eval()
{
    long r=factor();
    while(*p=='+'||*p=='-')
    {

        switch(*p){
        case '+':
                {
                    ++p;
                    r+=factor();
                    break;
                }
            case '-':
            {
                ++p;
                r-=factor();
                break;
            }
        }
    }
    return r;
}
long factor()
{
    long r=termen();
    while(*p=='*'||*p=='/')
    {
        switch(*p)
        {
            case '*':{
                ++p;
                r*=termen();
                break;
            }
            case '/':{
                ++p;
                r/=termen();
                break;
            }
        }
    }
    return r;
}
long termen()
{
    long r=0;
    if(*p=='(')
    {
        ++p;
        r=eval();
        ++p;
    }
    while(*p>='0'&&*p<='9')
    {
        r=r*10+(*p-'0');
        ++p;
    }
    return r;
}
int main()
{
    f.get(c,100001);
    g<<eval();
}