Pagini recente » Cod sursa (job #2433347) | Cod sursa (job #2675985) | Cod sursa (job #2943503) | Cod sursa (job #2058911) | Cod sursa (job #2854217)
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
char expresie[100001];
int ans, i, nr;
int convert_num(), termen(), factor(), eval();
int convert_num() {
int rez = 0;
for (; isdigit(expresie[i]);)
rez = rez * 10 + (int)expresie[i] - 48, ++i;
return rez;
}
int eval() {
int r = termen();
for (; expresie[i] == '+' || expresie[i] == '-';) {
if (expresie[i] == '+') {
++i, r += termen();
break;
}
else if (expresie[i] == '-') {
++i, r -= termen();
break;
}
}
return r;
}
int termen() {
int r = factor();
for (; expresie[i] == '*' || expresie[i] == '/';) {
if (expresie[i] == '*') {
++i, r *= factor();
break;
}
else if (expresie[i] == '/') {
++i, r /= factor();
break;
}
}
return r;
}
int factor() {
long r = 0;
if (expresie[i] == '(')
++i, r = eval(), ++i;
else
r = convert_num();
return r;
}
int main() {
cin.getline(expresie, 100001);
cout << eval();
return 0;
}