Pagini recente » Cod sursa (job #1906688) | Cod sursa (job #665002) | Cod sursa (job #928393) | Cod sursa (job #196475) | Cod sursa (job #898934)
Cod sursa(job #898934)
#include <stdio.h>
#include <string.h>
using namespace std;
const int MAX_L = 100010;
int p, len;
char S[ MAX_L ];
inline long long int factor();
inline long long int expresie();
inline long long int termen()
{
long long int r = factor();
while( (S[p] == '*' || S[p] == '/') && p <= len)
{
++p;
if(S[p-1] == '*')
r *= factor();
else r /= factor();
}
return r;
}
inline long long int factor()
{
long long int r = 0;
if(S[p] == '(')
{
++p;
r = expresie();
++p;
}
while(S[p] >= '0' && S[p] <= '9' && p <= len)
r = r * 10 + S[p] - '0', ++p;
return r;
}
inline long long int expresie()
{
long long int r = termen();
while( (S[p] == '+' || S[p] == '-') && p <= len)
{
++p;
if(S[p-1] == '+')
r += termen();
else r -= termen();
}
return r;
}
int main()
{
FILE *f, *g;
f = fopen("evaluare.in", "r");
g = fopen("evaluare.out", "w");
fgets(S, 100005, f);
len = strlen(S) - 1;
if(S[len] == '\n')
--len;
fprintf(g, "%lld\n", expresie());
fclose(f);
fclose(g);
return 0;
}