Pagini recente » Cod sursa (job #922113) | Cod sursa (job #2234822) | Cod sursa (job #1275036) | Cod sursa (job #1215789) | Cod sursa (job #2109861)
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
char s[100005];
long long n,nr;
long long fct(long long st,long long dr)
{
long long semn=-1;
char x;
for(long long i=dr;i>=st;--i)
if((s[i]=='+'||s[i]=='-')&&nr==0)
{
semn=i;
x=s[i];
break;
}
else
if(s[i]==')')
nr++;
else
if(s[i]=='(')
nr--;
if(semn!=-1)
{
if(x=='-')
return fct(st,semn-1)-fct(semn+1,dr);
else
return fct(st,semn-1)+fct(semn+1,dr);
}
semn=-1;
nr=0;
for(long long i=dr;i>=st;--i)
if((s[i]=='*'||s[i]=='/')&&nr==0)
{
semn=i;
x=s[i];
break;
}
else
if(s[i]==')')
nr++;
else
if(s[i]=='(')
nr--;
if(semn!=-1)
{
if(x=='/')
return fct(st,semn-1)/fct(semn+1,dr);
else
return fct(st,semn-1)*fct(semn+1,dr);
}
if(s[st]=='('&&s[dr]==')')
return fct(st+1,dr-1);
long long numar=0;
for(long long i=st;i<=dr;++i)
{
long long cifra=s[i]-'0';
numar=numar*10+cifra;
}
return numar;
}
int main()
{
ifstream fin("evaluare.in");
fin>>s;
n=strlen(s);
ofstream fout("evaluare.out");
fout<<fct(0,n-1);
return 0;
}