Pagini recente » Cod sursa (job #1490596) | Cod sursa (job #239893) | Cod sursa (job #967352) | Cod sursa (job #2421099) | Cod sursa (job #709593)
Cod sursa(job #709593)
#include<cstdio>
#include<string>
using namespace std;
#define nmax 100010
char sir[nmax],*c;
int aux;
int suma(),produs(),paranteza(),numar();
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s", &sir);
c=sir;
printf("%d",suma());
return 0;
}
int suma()
{
int ret=produs();
char op=*c;
while(op=='-'||op=='+')
{
c++;
aux=produs();
if(op=='+')
ret+=aux;
else
ret-=aux;
op=*c;
}
return ret;
}
int produs()
{
int ret=paranteza();
char op=*c;
while(op=='*'||op=='/')
{
c++;
aux=paranteza();
if(op=='*')
ret*=aux;
else
ret/=aux;
op=*c;
}
return ret;
}
int paranteza()
{
int ret;
if(*c=='(')
{
c++;
ret=suma();
c++;
return ret;
}
return numar();
}
int numar()
{
int ret=0;
while(*c>='0'&&*c<='9')
{
ret*=10;
ret+=*c-'0';
c++;
}
return ret;
}