Cod sursa(job #2728532)

Utilizator BalasaRaduBalasa Radu BalasaRadu Data 23 martie 2021 13:12:45
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <bits/stdc++.h>
using namespace std;

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

char s[100009];
int poz;

int operatie1();// + -
int operatie2();// * /
int termen();//  numar

int operatie1(){
    int ans=operatie2();
    while(s[poz]=='+'||s[poz]=='-'){
        if(s[poz]=='+'){
            poz++;
            ans+=operatie2();
        }
        else
        if(s[poz]=='-'){
            poz++;
            ans-=operatie2();
        }
    }
    return ans;
}

int operatie2(){
    int ans=termen();
    while(s[poz]=='*'||s[poz]=='/'){
        if(s[poz]=='*'){
            poz++;
            ans*=termen();
        }
        else
        if(s[poz]=='/'){
            poz++;
            ans/=termen();
        }
    }
    return ans;
}

int termen(){
    int ans=0;
    if(s[poz]=='('){
        poz++;
        ans=operatie1();
        poz++;
        return ans;
    }
    while(isdigit(s[poz]))
        ans=ans*10+s[poz++]-'0';
    return ans;
}

int32_t main()
{
    fin>>s;
    fout<<operatie1();
}