Pagini recente » Cod sursa (job #2116352) | Cod sursa (job #671150) | Cod sursa (job #1388432) | Cod sursa (job #1042741) | Cod sursa (job #1455675)
#include <stdio.h>
#define MAX 100001
char s[MAX];
int last=0;
int T();
int F();
int E()
{
int r = T();
while( s[last] == '+' || s[last] == '-' )
{
if(s[last] == '+' )
{
last++;
r += T();
}
else
{
last++;
r -= T();
}
}
return r;
}
int T()
{
int r = F();
while( s[last] == '*' || s[last] == '/' )
{
if( s[last] == '*' )
{
last++;
r *= F();
}
else
{
last++;
r /= F();
}
}
return r;
}
int F()
{
int r = 0;
if( s[last] == '(') ///subexpresie
{
last++;
r=E();
last++;/// pentru ')'
}
else
{
while(s[last] >= '0' && s[last] <= '9')
{
r = r * 10 + s[last]- '0';
last++;
}
}
return r;
}
int main()
{
FILE *fin, *fout;
fin = fopen ("evaluare.in", "r");
fout = fopen("evaluare.out", "w");
fgets (s, MAX, fin);
fprintf (fout, "%d\n", E());
return 0;
}