Pagini recente » Cod sursa (job #2875658) | Cod sursa (job #128644) | Cod sursa (job #885081) | Cod sursa (job #1437813) | Cod sursa (job #2174116)
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int pos;
char Str[100005];
int evaluateExpresion();
int evaluateMultiplication();
int evaluateNumber();
int evaluateExpresion()
{
int result = evaluateMultiplication();
while(Str[pos] == '+' || Str[pos] == '-')
{
if(Str[pos] == '+')
{
++pos;
result += evaluateMultiplication();
}
else
{
++pos;
result -= evaluateMultiplication();
}
}
return result;
}
int evaluateMultiplication()
{
int result = evaluateNumber();
while(Str[pos] == '*' || Str[pos] == '/')
{
if(Str[pos] == '*')
{
++pos;
result *= evaluateNumber();
}
else
{
++pos;
result /= evaluateNumber();
}
}
return result;
}
int evaluateNumber()
{
int result = 0;
if(Str[pos] == '(')
{
++pos;
result = evaluateExpresion();
++pos;
}
else
{
int val = 0;
while(Str[pos] >= '0' && Str[pos] <= '9')
{
val = val * 10 + Str[pos] - '0';
++pos;
}
result = val;
}
return result;
}
int main()
{
f.getline(Str, 100005);
g << evaluateExpresion() << "\n";
return 0;
}