Cod sursa(job #2974397)

Utilizator DariusM17Murgoci Darius DariusM17 Data 4 februarie 2023 00:16:54
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in") ;
ofstream fout("evaluare.out") ;
char s[100001],*p,op[4][4] = {"+-", "*/", "^", ""};
int gata(int a,int b,char c)
{
    if(c=='+') return a+b ;
    if(c=='-') return a-b ;
    if(c=='*') return a*b ;
    if(c=='/') return a/b ;
}
int solve(int lvl)
{
    int x,y ;
    if(lvl==2)
    {
        if(*p=='(') p++,x=solve(0),p++ ;
        else for(x=0; isdigit(*p); ++p) x=x*10+(*p-'0') ;
    }
    else
        for(x=solve(lvl+1); strchr(op[lvl],*p); x=y) y=gata(x,solve(lvl+1),*p++) ;
    return x ;
}
int main()
{
    fin>>s ;
    p=s ;
    fout<<solve(0) ;
    return 0;
}