Pagini recente » Cod sursa (job #2112560) | Cod sursa (job #1414563) | Cod sursa (job #2894756) | Cod sursa (job #529986) | Cod sursa (job #146311)
Cod sursa(job #146311)
#include <cstdio>
const int maxn = 100001;
FILE *in = fopen("evaluare.in","r"), *out = fopen("evaluare.out","w");
char a[maxn];
int k;
int factor();
int termen();
int valoare();
int expresie();
int factor()
{
int ret = 0;
if ( a[k] == '(' )
{
++k;
ret = expresie();
++k;
return ret;
}
return valoare();
}
int termen()
{
int ret = factor();
while ( a[k] == '*' || a[k] == '/' )
if ( a[k++] == '*' )
ret *= factor();
else
ret /= factor();
return ret;
}
int valoare()
{
int ret = 0;
while ( a[k] >= '0' && a[k] <= '9' )
ret = ret * 10 + (a[k++] - '0');
return ret;
}
int expresie()
{
int ret = termen();
while ( a[k] == '+' || a[k] == '-' )
if ( a[k++] == '+' )
ret += termen();
else
ret -= termen();
return ret;
}
int main()
{
fscanf(in, "%s", a);
fprintf(out, "%d\n", expresie());
return 0;
}