Pagini recente » Cod sursa (job #2653442) | Cod sursa (job #2818292) | Cod sursa (job #1024661) | Cod sursa (job #2551016) | Cod sursa (job #2969611)
/******************************************************************************
Online C++ Compiler.
Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
char s[100005];
int finder(int dr,int st,char x1,char x2)
{
int nr=0;
for(int i=dr;i>=st;i--)
{
if(s[i]==')')
nr++;
if(s[i]=='(')
nr--;
if(nr==0 && (s[i]==x1 || s[i]==x2))
return i;
}
return -23;
}
int solve(int st,int dr)
{
int find=finder(dr,st,'+','-');
if(find!=-23)
{
long long e1=solve(st,find-1);
long long e2=solve(find+1,dr);
if(s[find]=='+')
return e1+e2;
else
return e1-e2;
}
find=finder(dr,st,'*','/');
if(find!=-23)
{
long long e1=solve(st,find-1);
long long e2=solve(find+1,dr);
if(s[find]=='*')
return e1*e2;
else
return e1/e2;
}
if(s[st]=='(' && s[dr]==')')
return solve(st+1,dr-1);
long long nou=0;
for(int i=st;i<=dr;i++)
nou=nou*10+(s[i]-'0');
return nou;
}
int main()
{
cin>>s;
cout<<solve(0,strlen(s)-1);
return 0;
}