Pagini recente » Cod sursa (job #2257734) | Cod sursa (job #466128) | Cod sursa (job #2490408) | Cod sursa (job #2719801) | Cod sursa (job #3302156)
#include <bits/stdc++.h>
using namespace std;
constexpr char iname[] = "evaluare.in";
constexpr char oname[] = "evaluare.out";
int idx;
string s;
long long eval();
long long factor()
{
long long rez = 0;
if(s[idx] == '(') {
++idx;
rez = eval();
++idx;
return rez;
}
while(idx < s.size() && s[idx] >= '0' && s[idx] <= '9') {
rez = rez*10 + (s[idx] - '0');
++idx;
}
return rez;
}
long long termen()
{
long long rez = factor();
while(idx < s.size() && (s[idx] == '*' || s[idx] == '/')) {
if(s[idx] == '*') {
++idx;
rez *= factor();
} else {
++idx;
rez /= factor();
}
}
return rez;
}
long long eval()
{
long long rez = termen();
while(idx < s.size() && (s[idx] == '+' || s[idx] == '-')) {
if(s[idx] == '+') {
++idx;
rez += termen();
} else {
++idx;
rez -= termen();
}
}
return rez;
}
int main()
{
ifstream in(iname);
in >> s;
ofstream out(oname);
out << eval();
in.close();
out.close();
return 0;
}