Pagini recente » Rezultatele filtrării | Cod sursa (job #2834802) | Cod sursa (job #543803) | Cod sursa (job #968340) | Cod sursa (job #2264482)
#include <fstream>
#include <vector>
#include <bitset>
#include <unordered_map>
#include <algorithm>
#include <queue>
#include <math.h>
#include <iomanip>
#include <stack>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
string s;
int t;
int termen();
int factor();
int eval()
{
int r = termen();
while(s[t] == '+' || s[t] == '-')
{
t++;
if(s[t - 1] == '+')
r += termen();
else
r -= termen();
}
return r;
}
int termen()
{
int r = factor();
while(s[t] == '*' || s[t] == '/')
{
t++;
if(s[t - 1] == '*')
r *= factor();
else
r /= factor();
}
return r;
}
int factor()
{
int r = 0;
if(s[t] == '(')
{
t++;
r = eval();
t++;
}
while(isdigit(s[t]))
{
r = r * 10 + s[t] - '0';
t++;
}
return r;
}
main()
{
cin >> s;
t = 0;
cout << eval();
}