Cod sursa(job #2339114)

Utilizator ivddabDabelea Ioana-Viviana ivddab Data 8 februarie 2019 13:47:44
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <cstring>
#define CH 100009
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int n,i;
char s[CH];
int recv(char s[],int st,int dr){
   int d=0;
   for(int i=dr;i>=st;i--){
     if(s[i]=='+'&&d==0) return recv(s,st,i-1)+recv(s,i+1,dr);
       else
     if(s[i]=='-'&&d==0) return recv(s,st,i-1)-recv(s,i+1,dr);
       else
     if(s[i]==')') d++;
       else
     if(s[i]=='(') d--;
   }
   for(int i=dr;i>=st;i--){
     if(s[i]=='*'&&d==0) return recv(s,st,i-1)*recv(s,i+1,dr);
       else
     if(s[i]=='/'&&d==0) return recv(s,st,i-1)/recv(s,i+1,dr);
       else
     if(s[i]==')') d++;
       else
     if(s[i]=='(') d--;
   }
   if(s[st]=='('&&s[dr]==')') return recv(s,st+1,dr-1);
      else{
        int nr=0;
        while(st<=dr){
            if(s[st]>='0'&&s[st]<='9') nr=nr*10+(s[st]-'0');
            st++;
        }
        return nr;
      }
}
int main()
{
    f.get(s,CH); n=strlen(s);
    g<<recv(s,0,n-1)<<'\n';
    return 0;
}