Pagini recente » Cod sursa (job #2572739) | Cod sursa (job #3146180) | Cod sursa (job #1991200) | Cod sursa (job #2693813) | Cod sursa (job #916794)
Cod sursa(job #916794)
#include<cstdio>
#define MAX_SIZE 100005
FILE *f=fopen("evaluare.in","r");
FILE *g=fopen("evaluare.out","w");
using namespace std;
char sir[MAX_SIZE],*p=sir;
int term();
int factor();
//calculez suma
inline int eval()
{
int r=term();
while(*p == '+' || *p == '-')
{
switch( *p)
{
case '+':
++p;
r+=term();
break;
case '-':
++p;
r-=term();
break;
}
}
return r;
}
//formez termenii pentru suma
int term()
{
int r=factor();
while( *p == '*' || *p == '/')
{
switch( *p )
{
case '*':
++p;
r*=factor();
break;
case '/':
++p;
r/=factor();
break;
}
}
return r;
}
int factor()
{
int r=0;
if( *p == '(')
{
++p;
r=eval();
++p;
}
else
{
while( *p>= '0' && *p <= '9')
{
r=r*10+*p-'0';
++p;
}
}
return r;
}
int main( void )
{
fgets(sir,MAX_SIZE,f);
fprintf(g,"%d",eval());
fclose(f);
fclose(g);
return 0;
}