Cod sursa(job #3208444)

Utilizator Luca_georgescuLucageorgescu Luca_georgescu Data 28 februarie 2024 17:25:45
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <bits/stdc++.h>

using namespace std;

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

char *p,s[100001];
int eval();
int termen();
int factor();

int eval()
{
    int rez=termen();
    while ( *p=='+' || *p=='-' )
    {
        if ( *p=='+' )
        {
            p++;
            rez+=termen();
        }
        else
        {
            p++;
            rez-=termen();
        }
    }
    return rez;
}

int termen()
{
    int rez=factor();
    while( *p=='*' || *p=='/' )
    {
        if( *p=='*' )
        {
            p++;
            rez*=factor();
        }
        else
        {
            p++;
            rez/=factor();
        }
    }
    return rez;
}

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

int main()
{
    f.getline(s,1000005);
    p=s;
    g << eval();
    return 0;
}