Pagini recente » Cod sursa (job #2698674) | Cod sursa (job #1116962) | Cod sursa (job #90161) | Cod sursa (job #377093) | Cod sursa (job #2824605)
#include <fstream>
#include <cstring>
#define DIM 100001
char s[DIM];
int i = 0;
int expresion();
int term();
int factor();
int expresion()
{
int r = term();
while (s[i] == '+' || s[i] == '-')
{
if (s[i] == '+')
{
i++;
r += term();
}
else
{
i++;
r -= term();
}
}
return r;
}
int term()
{
int r = factor();
while (s[i] == '*' || s[i] == '/')
{
if (s[i] == '*')
{
i++;
r *= factor();
}
else
{
i++;
r /= factor();
}
}
return r;
}
int factor()
{
int r{};
if (s[i] == '(')
{
i++;
r = expresion();
i++;
}
else
{
while (s[i] >= '0' && s[i] <= '9')
{
r = r * 10 + (s[i] - '0');
i++;
}
}
return r;
}
int main()
{
std::ifstream fin("evaluare.in");
std::ofstream fout("evaluare.out");
fin.get(s, DIM);
fout << expresion();
return 0;
}