Pagini recente » Cod sursa (job #442072) | Cod sursa (job #1440259) | Cod sursa (job #648964) | Cod sursa (job #2897842) | Cod sursa (job #1874837)
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char S[100009], *p = S;
int factor();
int termen();
int evaluare();
int factor()
{
int r = 0;
if(*p == '(')
{
++p;
r = evaluare();
++p;
}
else
while(*p >= '0' && *p <= '9') { r = r * 10 + *p - '0'; ++p; }
return r;
}
int termen()
{
int r = factor();
while(*p == '*' || *p == '/')
switch(*p)
{
case '*': ++p; r *= factor(); break;
case '/': ++p; r /= factor(); break;
}
return r;
}
int evaluare()
{
int r = termen();
while(*p == '+' || *p == '+')
switch(*p)
{
case '+': ++p; r += termen(); break;
case '-': ++p; r -= termen(); break;
}
return r;
}
int main()
{
f>>S;
g<<evaluare();
return 0;
}