Pagini recente » Cod sursa (job #1916695) | Cod sursa (job #1609127) | Cod sursa (job #2241564) | Cod sursa (job #377967) | Cod sursa (job #3157434)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("evaluare.in");
ofstream out ("evaluare.out");
#define MAX_N 100000
string s;
int poz;
int adunare();
int inmultire();
int factor()
{
int nr = 0;
if(s[poz] == '(')
{
++poz;
nr = adunare();
++poz;
}
else while(s[poz] >= '0' && s[poz] <= '9')
{
nr = nr * 10 + s[poz] - '0';
poz++;
}
return nr;
}
int inmultire()
{
int nr = factor();
while(poz < s.size() && (s[poz] == '*' || s[poz] == '/'))
{
if(s[poz++] == '/') nr /= factor();
else nr *= factor();
}
return nr;
}
int adunare()
{
int nr = inmultire();
while(poz < s.size() && (s[poz] == '+' || s[poz] == '-'))
{
if(s[poz++] == '-') nr -= inmultire();
else nr += inmultire();
}
return nr;
}
int main()
{
in >> s;
out << adunare();
return 0;
}