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