Pagini recente » Cod sursa (job #2119919) | Cod sursa (job #3295169) | Cod sursa (job #2250741) | Cod sursa (job #2357998) | Cod sursa (job #2710134)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char sir[100005];
int poz;
int expresie();
int operand() {
if (sir[poz] == '(') {
poz++;
int nr = expresie();
poz++;
return nr;
}
int nr = 0;
while (isdigit(sir[poz]))
nr = nr * 10 + sir[poz++] - '0';
return nr;
}
int operatie() {
int nr = operand();
while (sir[poz] == '*' || sir[poz] == '/') {
if (sir[poz] == '*') {
poz++;
nr *= operand();
} else {
poz++;
nr /= operand();
}
}
return nr;
}
int expresie() {
int nr = operatie();
while (sir[poz] == '+' || sir[poz] == '-') {
if (sir[poz] == '+') {
poz++;
nr += operatie();
} else {
poz++;
nr -= operatie();
}
}
return nr;
}
int main() {
f.getline(sir, 1000005);
g << expresie();
return 0;
}