Pagini recente » Diferente pentru problema/cub intre reviziile 14 si 15 | Cod sursa (job #1436534) | Cod sursa (job #1987395) | Rating Paralescu Flavia-Patricia (PatriPara) | Cod sursa (job #2047037)
#include<fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
int i;
char c[100001];
int expresie(void), termen(void),factor(void);
int expresie(void) {
int r = termen();
while (c[i] == '+' || c[i] == '-' ) {
if (c[i] =='+') {
i++;
r += termen();
}
else{
i ++;
r-=termen();
}
}
return r;
}
int termen(void) {
int r = factor();
while (c[i] == '*' || c[i] == '/') {
if (c[i] == '*') {
i ++;
r *= factor();
}
else{
i ++;
r /= factor();
}
}
return r;
}
int factor(void) {
int r;
if (c[i] =='(') {
i ++;
r = expresie();
i ++;
}
else{
r = 0;
while (c[i] >= '0' && c[i] <= '9') {
r = r*10 + c[i] - 48;
i ++;
}
}
return r;
}
int main(void) {
in >> c;
out << expresie();
return 0;
}