Pagini recente » Cod sursa (job #1964838) | Cod sursa (job #350313) | Cod sursa (job #1741619) | Cod sursa (job #2244727) | Cod sursa (job #567483)
Cod sursa(job #567483)
#include <stdio.h>
#include <string.h>
using namespace std;
char a[100100];
int b[100100];
int n;
int k;
void citire()
{
gets(a);
n=strlen(a);
a[n]=')';
n++;
}
int rez(int &i)
{
int inceput=k;
for(;i<n;)
{
if(a[i]=='(')
{
b[k++]=rez(++i);
i++;
k++;
}
if(a[i]==')')
{
int s=0;
--k;
for(;inceput<=k;--k)
{
s+=b[k];
b[k]=0;
}
return s;
}
if(a[i]=='+' || a[i]=='-' || (a[i]>='0' && a[i]<='9'))
{
int x;
sscanf(a+i,"%d",&x);
++i;
for(;a[i]>='0' && a[i]<='9';++i);
b[k++]=x;
}
if(a[i]=='*' || a[i]=='/')
{
char c=a[i];
++i;
int x;
sscanf(a+i,"%d",&x);
for(;a[i]>='0' && a[i]<='9';++i);
if(c=='*')
b[k-1]*=x;
else
b[k-1]/=x;
}
}
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
citire();
int i=0;
printf("%d",rez(i));
return 0;
}