Pagini recente » Monitorul de evaluare | Cod sursa (job #2764461) | Cod sursa (job #1585529) | Cod sursa (job #1072458) | Cod sursa (job #2000376)
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
ifstream in("cmls.in");
ofstream out("cmls.out");
int f1();
int f2();
string s;
int i;
int f3()
{
int nr = f1();
while(s[i] == '+' || s[i] == '-')
{
if(s[i] == '+')
{
++i;
nr += f1();
}
else
{
++i;
nr -= f1();
}
}
return nr;
}
int f1()
{
int nr = f2();
while(s[i] == '*' || s[i] == '/')
{
if(s[i] == '*')
{
++i;
nr *= f2();
}
else
{
++i;
nr /= f2();
}
}
return nr;
}
int f2()
{
int nr = 0;
if(s[i] == '(')
{
++i;
nr = f3();
++i;
}
else
{
while(s[i] >= '0' && s[i] <= '9')
{
nr = nr * 10 + s[i] - '0';
++i;
}
}
return nr;
}
int main()
{
in >> s;
out << f3();
return 0;
}