Pagini recente » Cod sursa (job #1731926) | Cod sursa (job #262051) | Cod sursa (job #1925208) | Cod sursa (job #2299232) | Cod sursa (job #567488)
Cod sursa(job #567488)
#include <cstdio>
#include <cstring>
using namespace std;
const int M=100005;
char a[M];
int sir[M], n, m;
int expresie(int &i)
{
int val=0, p=m;
for (; i<n; )
{
if (a[i]=='(')
{
++i;
sir[m++]=expresie(i);
i++;
}
if (a[i]==')')
{
for (; m>=p; m--)
{
val+=sir[m];
sir[m]=0;
}
return val;
}
if (a[i]=='+' || a[i]=='-' || a[i]>='0' && a[i]<='9')
{
sscanf (a+i,"%d",&sir[++m]);
++i;
while (a[i]>='0' && a[i]<='9')
++i;
}
if (a[i]=='*' || a[i]=='/')
{
int x=0;
++i;
sscanf(a+i,"%d",&sir[++m]);
if (a[i-1]=='*')
sir[m-1]*=sir[m];
else sir[m-1]/=sir[m];
while (a[i]>='0' && a[i]<='9')
i++;
sir[m]=0; m--;
}
}
}
int main()
{
freopen ("evaluare.in","r",stdin);
//freopen ("evaluare.out","w",stdout);
fgets(a,M,stdin);
a[strlen(a)-1]=')';
n=strlen(a);
int p=0;
printf ("%d",expresie(p));
return 0;
}