Pagini recente » Cod sursa (job #235656) | Cod sursa (job #1424391) | Cod sursa (job #11301) | Cod sursa (job #3206978) | Cod sursa (job #3283024)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string s;
int poz;
int expresie();
int termen();
int factor();
int constanta();
int expresie(){
int ret = termen();
while(s[poz] == '+' || s[poz] == '-'){
if(s[poz] == '+'){
poz++;
ret += termen();
}else if(s[poz] == '-'){
poz++;
ret -= termen();
}
}
return ret;
}
int termen(){
int ret = factor();
while(s[poz] == '*' || s[poz] == '/'){
if(s[poz] == '*'){
poz++;
ret *= factor();
}else if(s[poz] == '/'){
poz++;
ret /= factor();
}
}
return ret;
}
int factor(){
int ret;
if(s[poz] == '('){
poz++;
ret = expresie();
poz++;
}else if(isdigit(s[poz])){
ret = constanta();
}
return ret;
}
int constanta(){
int ret = 0;
while(isdigit(s[poz])){
ret = ret * 10 + (s[poz] - '0');
poz++;
}
return ret;
}
int main(){
fin >> s;
fout << expresie();
}