Cod sursa(job #2757994)

Utilizator Simon2712Simon Slanina Simon2712 Data 7 iunie 2021 22:27:50
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>

using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
char s[100001];
int poz=0;
#define ll long long
ll termen();
ll eval();
ll factor();
ll eval()
{
    ll rez=termen();
    while(s[poz]=='+' || s[poz]=='-')
    {
        if(s[poz]=='+'){
            poz++;
            rez+=termen();
        }
        if(s[poz]=='-'){
            poz++;
            rez-=termen();
        }
    }
    return rez;
}
ll termen()
{
    ll rez=factor();
    while(s[poz]=='/' || s[poz]=='*')
    {
        if(s[poz]=='*'){
            poz++;
            rez*=factor();
        }
        if(s[poz]=='/'){
            poz++;
            rez/=factor();
        }

    }
    return rez;
}
ll factor()
{
    ll rez=0;
    if(s[poz]=='(')
    {
        poz++;
        rez=eval();
        poz++;
    }
    else
    {
         while(s[poz]>='0' && s[poz]<='9')
         {
             rez=rez*10+s[poz]-'0';
             poz++;
         }
    }
    return rez;
}
int main()
{
    cin>>s;
    cout<<eval();
    return 0;
}