Pagini recente » Cod sursa (job #1779079) | Cod sursa (job #2372944) | Cod sursa (job #1785649) | Profil Eszter04 | Cod sursa (job #1934741)
#include <fstream>
const long kMAX = 100010;
char S[kMAX], *p = S;
long operand();
long factor();
long eval()
{
long r = operand();
while ( *p == '+' || *p == '-')
{
switch (*p)
{
case '+':
++p;
r += operand();
break;
case '-':
++p;
r -= operand();
break;
}
}
return r;
}
long operand()
{
long r = factor();
while ( *p == '*' || *p == '/')
{
switch (*p)
{
case '*':
++p;
r *= factor();
break;
case '/':
++p;
r /= factor();
break;
}
}
return r;
}
long factor()
{
long r = 0;
if ( *p == '(' )
{
++p;
r = eval();
++p;
}
else
{
while ( *p >= '0' && *p <= '9')
{
r = r*10 + *p - '0';
++p;
}
}
return r;
}
int main()
{
std::ifstream fin("evaluare.in");
fin >> S;
fin.close();
std::ofstream fout("evaluare.out");
fout << eval() << '\n';
fout.close();
return 0;
}