Cod sursa(job #3276726)

Utilizator suzanicaSuzanica Mihu suzanica Data 14 februarie 2025 12:12:27
Problema Evaluarea unei expresii Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.36 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 eval();

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

        switch(*p){
        case '+':
                {
                    ++p;
                    r+=factor();
                    break;
                }
            case '-':
            {
                ++p;if(*p=='(')
                {
                    ++p;
                    r=eval();
                    ++p;
                }
                r-=factor();
                break;
            }
        }
    }
    return r;
}
long long factor()
{
    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=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();
}