Pagini recente » Cod sursa (job #809062) | Cod sursa (job #921932) | Cod sursa (job #504111) | Cod sursa (job #2916646) | Cod sursa (job #2339114)
#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;
}