Pagini recente » Cod sursa (job #1047567) | Cod sursa (job #3137766) | Cod sursa (job #2236969) | Cod sursa (job #1273421) | Cod sursa (job #2137629)
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int expresie();
int termen();
int factor();
char s[100005], *p;
int main()
{
fin >> s;
p = s;
fout << expresie() << '\n';
return 0;
}
int factor()
{
int rez;
if (*p == '(')
{
p++;
rez = expresie();
p++;
}
else
{
rez = 0;
while (*p >= '0' && *p <= '9')
{
rez = rez * 10 + *p - '0';
p++;
}
}
return rez;
}
int termen()
{
int rez = factor();
while (*p == '*' || *p == '/')
{
if (*p == '*')
{
++p;
rez *= factor();
}
else if (*p == '/')
{
++p;
rez /= factor();
}
}
return rez;
}
int expresie()
{
int rez = termen();
while (*p == '+' || *p == '-')
{
if (*p == '+')
{
++p;
rez += termen();
}
else if (*p == '-')
{
++p;
rez -= termen();
}
}
return rez;
}