Cod sursa(job #2721836)

Utilizator stefantagaTaga Stefan stefantaga Data 12 martie 2021 12:26:03
Problema Evaluarea unei expresii Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int eval();
int termen();
int factor();
int poz,n;
char s[100005];
int eval()
{
    int rez=termen();
    while (poz<n&&(s[poz]=='+'||s[poz]=='-'))
    {
        if (s[poz]=='+')
        {
            poz++;
            rez=rez+termen();
        }
        else
        {
            poz++;
            rez=rez-termen();
        }
    }
    return rez;
}
int termen()
{
    int rez=factor();
    while (poz<n&&(s[poz]=='*'||s[poz]=='/'))
    {
        if (s[poz]=='*')
        {
            poz++;
            rez=rez*factor();
        }
        else
        if (s[poz]=='/')
        {
            poz++;
            rez=rez/factor();
        }
    }
    return rez;
}
int factor()
{
    int rez=0;
    if (s[poz]=='(')
    {
        poz++;
        rez=eval();
        poz++;
    }
    int semn=1;
    if (s[poz]=='-')
    {
        semn=-1;
        poz++;
    }
    while (poz<n&&('0'<=s[poz]&&s[poz]<='9'))
    {
        rez=rez*10+(s[poz]-'0');
        poz++;
    }
    return rez*semn;
}
int main()
{
    f.getline(s,100003);
    n=strlen(s);
    g<<eval();
    return 0;
}