Cod sursa(job #2728442)

Utilizator BalasaRaduBalasa Radu BalasaRadu Data 23 martie 2021 11:45:38
Problema Evaluarea unei expresii Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>
#define LMAX 2
using namespace std;

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

char s[100009];
char op[2][4] = { "+-", "*/"};
int poz=0;

int evaloare(int a,int b,char op){
    if(op=='+') return a+b;
    if(op=='-') return a-b;
    if(op=='*') return a*b;
    if(op=='/') return a/b;
}

int expresie(int nivel){
    int x=0,y=0;
    if(nivel==LMAX){
        if(s[poz]=='('){
            poz++;
            x=expresie(0);
            poz++;
        }
        else
            while(isdigit(s[poz]))
                x=x*10+s[poz++]-'0';
    }
    else{
        x=expresie(nivel+1);
        if(strchr(op[nivel],s[poz])){
            y=evaloare(x,expresie(nivel+1),s[poz++]);
        x=y;
        }
    }
    return x;
}

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