Pagini recente » Cod sursa (job #1305518) | Cod sursa (job #758147) | Cod sursa (job #2051889) | Profil Asgari_Armin | Cod sursa (job #1160714)
#include <fstream>
#include <cstring>
using namespace std;
const int MAX_LEN = 100002;
char *p;
char s[MAX_LEN];
int expresie();
int factor() {
int ret = 0;
if(*p == '(') {
++p;
ret = expresie();
++p;
}
else {
while(*p >= '0' && *p <= '9') {
ret = ret * 10 + *p - '0';
++p;
}
}
return ret;
}
int termen() {
int ret = 0;
ret = factor();
while(*p == '*' || *p == '/') {
if(*p == '*') {
++p;
ret *= factor();
}
else {
++p;
ret /= factor();
}
}
return ret;
}
int expresie() {
int ret = 0;
ret = termen();
while(*p == '+' || *p == '-') {
if(*p == '+') {
++p;
ret += termen();
}
else {
++p;
ret -= termen();
}
}
return ret;
}
int main() {
ifstream f("evaluare.in");
ofstream g("evaluare.out");
f >> s;
p = s;
g << expresie() << "\n";
f.close();
g.close();
return 0;
}