Pagini recente » Cod sursa (job #254129) | Cod sursa (job #1369015) | Cod sursa (job #1765534) | Cod sursa (job #62774) | Cod sursa (job #2861755)
#include <bits/stdc++.h>
using namespace std;
string s;
int poz;
int expresie();
int nr() {
int ans = 0,semn;
semn = 1 - (2 * (s[poz] == '-'));
while (s[poz] >= '0' && s[poz] <= '9') {
ans = ans * 10 + (s[poz] - '0');
poz++;
}
return semn * ans;
}
int factor() {
int ans = 0;
if (s[poz] == '(') {
poz++;
ans = expresie();
poz++;
}
else
ans = nr();
return ans;
}
int termen() {
int ans = factor();
while (poz < s.size() && (s[poz] == '*' || s[poz] == '/')) {
if (s[poz++] == '*')
ans = ans * factor();
else
ans = ans / factor();
}
return ans;
}
int expresie() {
int ans = termen(),semn;
while (poz < s.size() && (s[poz] == '+' || s[poz] == '-')) {
semn = 1 - (2 * (s[poz] == '-'));
poz++;
ans += semn * termen();
}
return ans;
}
int main()
{
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
poz = 0;
fin >> s;
fout << expresie();
return 0;
}