Cod sursa(job #3174071)

Utilizator paaull69Ion Paul paaull69 Data 24 noiembrie 2023 12:09:14
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <bits/stdc++.h>

using namespace std;
typedef long long int ll;
#define MOD 9001


ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

char s[100001];
int sindex=0;

bool isnum(char x)
{
    return '0' <= x && x<='9';
}
int adunare();

int factor()
{
    int res=0;
    if(s[sindex]=='(')
    {
        ++sindex;
        res=adunare();
        ++sindex;
    }
    else
    {
        while(isnum(s[sindex]))
        {
            res = res * 10 + s[sindex]-'0';
            sindex++;
        }
    }

    return res;
}
int inmultire()
{
    int res= factor();
    while(s[sindex]=='*' || s[sindex]=='/')
    {
        if(s[sindex++]=='*')
        {
            res *= factor();
        }
        else
        {
            res/=factor();
        }
    }
    return res;
}
int adunare()
{
    int res=inmultire();
    while(s[sindex] == '+' || s[sindex] =='-')
    {
        if(s[sindex++]=='+')
        {
            res += inmultire();
        }
        else
        {
            res -= inmultire();
        }
    }
    return res;
}
int main()
{
    fin >> s;
    fout << adunare();
}