Pagini recente » Cod sursa (job #2764633) | Cod sursa (job #2187442) | Cod sursa (job #2177894) | Cod sursa (job #258706) | Cod sursa (job #895502)
Cod sursa(job #895502)
#include <cstdio>
using namespace std;
char S[100010];
char *Buffer = S;
int GetInt(){
int Nr=0;
while(*Buffer >= '0' && *Buffer <= '9')
Nr=Nr*10 + ( *(Buffer++) ) - '0' ;
return Nr;
}
int Termen();
int Factor();
int Eval(){
int r=Termen();
while(*Buffer == '+' || *Buffer == '-' )
if(*Buffer == '+')
{
++Buffer;
r+=Termen();
}
else
{
++Buffer;
r-=Termen();
}
return r;
}
int Termen(){
int r=Factor();
while( *Buffer == '*' || *Buffer == '/' )
if(*Buffer == '*' )
{
++Buffer;
r*=Factor();
}
else
{
++Buffer;
r/=Factor();
}
return r;
}
int Factor(){
int r=0;
if( *Buffer=='(' )
{
++Buffer;
r=Eval();
++Buffer;
}
else
r=GetInt();
return r;
}
int main(){
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
gets(S);
printf("%d" , Eval() );
return 0;
}