Pagini recente » Cod sursa (job #2565941) | Cod sursa (job #1859421) | Cod sursa (job #3259291) | Cod sursa (job #1842639) | Cod sursa (job #2151861)
#include <iostream>
#include <fstream>
#include <string.h>
#define dMAX 100001
using namespace std;
int i, t;
char expresie[dMAX];
int exp();
int factor();
int termen();
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int main()
{
fin >> expresie;
fout << exp();
return 0;
}
int exp() {
int t = termen();
while (expresie[i] == '+' || expresie[i] == '-') {
if (expresie[i] == '+') {
i++;
t += termen();
} else {
i++;
t -= termen();
}
}
return t;
}
int termen() {
int t = factor();
while (expresie[i] == '*' || expresie[i] == '/') {
if (expresie[i] == '*') {
i++;
t *= factor();
} else {
i++;
t /= factor();
}
}
return t;
}
int factor() {
int t = 0;
if (expresie[i] == '(') {
i++;
t = exp();
i++;
} else {
while (expresie[i] >= '0' && expresie[i] <= '9') {
t = t * 10 + expresie[i] - '0';
i++;
}
}
return t;
}