Pagini recente » Cod sursa (job #421424) | Cod sursa (job #1239189) | Cod sursa (job #2174313) | Cod sursa (job #40947) | Cod sursa (job #1874844)
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char S[100009], *p = S;
int evaluare();
int factor()
{
int r;
if(*p == '(') { ++p; r = evaluare(); ++p; }
else
{
r = 0;
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;
}