Pagini recente » Cod sursa (job #1224242) | Cod sursa (job #2424807) | Cod sursa (job #2524248) | Cod sursa (job #376227) | Cod sursa (job #913087)
Cod sursa(job #913087)
#include<cstdio>
#include<cstring>
using namespace std;
const char InFile[]="evaluare.in";
const char OutFile[]="evaluare.out";
const int MaxN=100005;
char Str[MaxN], *p=Str;
long factor();
long termen();
long eval()
{
long r=termen();
while( *p == '+' || *p == '-' )
{
switch( *p )
{
case '+' :
++p;
r += termen();
break;
case '-' :
++p;
r -= termen();
break;
}
}
return r;
}
long termen()
{
long r=factor();
while( *p == '*' || *p == '/' )
{
switch( *p )
{
case '*' :
++p;
r *= factor();
break;
case '/' :
++p;
r /= factor();
break;
}
}
return r;
}
long factor()
{
long r=0;
if( *p == '(' )
{
++p;
r=eval();
++p;
}
else
for( ; *p >= '0' && *p <= '9' ; r=r*10 +*p-'0', ++p );
return r;
}
int main()
{
FILE *fin,*fout;
fin=fopen(InFile, "rt");
fout=fopen(OutFile, "wt");
fgets( Str, MaxN, fin);
fprintf(fout,"%ld", eval() );
return 0;
}