Pagini recente » Cod sursa (job #2284461) | Cod sursa (job #1926761) | Cod sursa (job #1990853) | Cod sursa (job #1364731) | Cod sursa (job #2067993)
#include <fstream>
#include <cstring>
using namespace std;
int r,i,t,z[100005],q,p=1,x,y;
char c[100005],u[100005],e[200005];
int main()
{
ifstream f("evaluare.in");
ofstream g("evaluare.out");
f>>c;
for(i=strlen(c)-1;i>=0;i--)
{
if(strchr("()+-/*",c[i]))
{
if(c[i]=='(')
{
while(u[t]!=')')
{
e[++r]=u[t];
t--;
}
t--;
}
else
{
if(c[i]=='+'||c[i]=='-')
while(u[t]=='/'||u[t]=='*')
{
e[++r]=u[t];
t--;
}
u[++t]=c[i];
}
}
else
{
e[++r]=c[i];
if(c[i-1]<'0'||c[i-1]>'9')
e[++r]=' ';
}
}
for(i=t;i>0;i--)
e[++r]=u[i];
t=0;i=1;
while(i<=r)
{
if(strchr("+-/*",e[i]))
{
x=z[t];t--;
y=z[t];
if(e[i]=='+')
z[t]=x+y;
if(e[i]=='*')
z[t]=x*y;
if(e[i]=='-')
z[t]=x-y;
if(e[i]=='/')
z[t]=x/y;
}
else
{
while(e[i]>='0'&&e[i]<='9')
{
q=q+p*(e[i]-48);
p=p*10;
i++;
}
p=1;
z[++t]=q;
q=0;
}
i++;
}
g<<z[t];
return 0;
}