Pagini recente » Cod sursa (job #1551288) | Cod sursa (job #969932) | Cod sursa (job #35531) | Cod sursa (job #132024) | Cod sursa (job #1404556)
#include <fstream>
#include <cctype>
const int MAX_SIZE(100001);
char s [MAX_SIZE];
int Index;
int Priority1 (void);
int Priority2 (void);
int Priority3 (void);
int Priority1 (void)
{
int result(Priority2());
while (s[Index] == '+' || s[Index] == '-')
if (s[Index] == '+')
{
++Index;
result += Priority2();
}
else
{
++Index;
result -= Priority2();
}
return result;
}
int Priority2 (void)
{
int result(Priority3());
while (s[Index] == '*' || s[Index] == '/')
if (s[Index] == '*')
{
++Index;
result *= Priority3();
}
else
{
++Index;
result /= Priority3();
}
return result;
}
int Priority3 (void)
{
int result(0);
if (s[Index] == '(')
{
++Index;
result = Priority1();
++Index;
}
else
while (std::isdigit(s[Index]))
{
result *= 10;
result += s[Index] - '0';
++Index;
}
return result;
}
int main (void)
{
std::ifstream input("evaluare.in");
input >> s;
input.close();
std::ofstream output("evaluare.out");
output << Priority1() << '\n';
output.close();
return 0;
}