Pagini recente » Cod sursa (job #371329) | Cod sursa (job #2850178) | Cod sursa (job #1887972) | Cod sursa (job #1916971) | Cod sursa (job #2152766)
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char c[100002];
int x[100002],w[100002];
int divi(int p, int q)
{
int i,mini=23000000,m=p,r,t;
if(p<q)
{
for(i=p;i<=q;i++)
if(x[i]<mini)
mini=x[i],m=i;
r=divi(p,m-1);
t=divi(m+1,q);
if(w[m]==-1)
return r+t;
if(w[m]==-2)
return r-t;
if(w[m]==-3)
return r*t;
return r/t;
}
return w[p];
}
int main()
{
char r;
int i=1,j=1,b=0,maxi=23000000,n,ok;
while(f>>r)
{
c[i]=r;
i++;
}
i--;
n=i;
for(i=1;i<=n;i++)
{
if(c[i]=='(')
b=b+10;
else
if(c[i]==')')
b=b-10;
else
if(c[i]=='+')
x[j]=1+b,w[j]=-1,j++;
else
if(c[i]=='-')
x[j]=1+b,w[j]=-2,j++;
else
if(c[i]=='*')
x[j]=5+b,w[j]=-3,j++;
else
if(c[i]=='/')
x[j]=5+b,w[j]=-4,j++;
else
{
ok=1;
x[j]=maxi;
w[j]=c[i]-'0';
i++;
while(c[i]>='0' && c[i]<='9')
{
w[j]=w[j]*10+c[i]-'0';
i++;
}
j++;
i--;
}
}
g<<divi(1,j-1);
return 0;
}