Pagini recente » Cod sursa (job #411624) | Cod sursa (job #2047219) | Cod sursa (job #1888951) | Cod sursa (job #1465696) | Cod sursa (job #1676456)
#include<iostream>
#include<string.h>
#include<fstream>
using namespace std;
ifstream h("evaluare.in");
ofstream g("evaluare.out");
char a[100001];
int n;
int f(int x,int y)
{
int v1,v2,w,c=0,i;
if(a[y]==')')
{
c++;
for(i=y-1;i>=x;i--)
{
if(a[i]==')') c++;
else if(a[i]=='(')
{
c--;
if(c==0) break;
}
}
if(i==x) return f(x+1,y-1);
}
c=0;
for(i=y;i>=x;i--)
{
if(a[i]==')') c++;
else if(a[i]=='(') c--;
if((a[i]=='+'||a[i]=='-')&&c==0)
{
v1=f(x,i-1);
v2=f(i+1,y);
if(a[i]=='+')return (v1+v2);
return v1-v2;
}
}
c=0;
for(i=y;i>=x;i--)
{
if(a[i]==')') c++;
else if(a[i]=='(') c--;
if((a[i]=='*'||a[i]=='/')&&c==0)
{
v1=f(x,i-1);
v2=f(i+1,y);
if(a[i]=='*') return (v1*v2);
return (v1/v2);
}
}
w=0;
for(i=x;i<=y;i++)
{
w=w*10+(a[i]-'0');
}
return w;
}
int main()
{
h.get(a,100001);
h.get();
n=strlen(a);
g<<f(0,n-1);
h.close();
g.close();
return 0;
}