Pagini recente » Cod sursa (job #558169) | Cod sursa (job #2606416) | Cod sursa (job #3177332) | Cod sursa (job #2789407) | Cod sursa (job #1139875)
#include <fstream>
using namespace std;
const int N = 100000;
char s[N], *poz;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
int expresie(), factor(), termen();
inline bool cifra(char c){
return '0' <= c && c <= '9';
}
int expresie(){
int ans = termen();
while (*poz == '+' || *poz == '-')
if (*poz == '+'){
++poz;
ans += termen();
} else {
++poz;
ans -= termen();
}
return ans;
}
int termen(){
int ans = factor();
while (*poz == '*' || *poz == '/')
if (*poz == '*'){
++poz;
ans *= factor();
} else {
++poz;
ans /= factor();
}
return ans;
}
int factor(){
int ans = 0;
if ( *poz == '('){
poz++;
ans = expresie();
poz++;
return ans;
}
while ( cifra(*poz) ){
ans = ans * 10 + *poz - '0';
poz++;
}
return ans;
}
int main(){
in >> s;
poz = s;
out << expresie() << "\n";
return 0;
}