Pagini recente » Cod sursa (job #180724) | Cod sursa (job #1697967) | Cod sursa (job #2428925) | Cod sursa (job #1152293) | Cod sursa (job #2368377)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char S[100010], *p = S;
int expresie();
int factor() {
int r;
if(*p == '(') {
++p;
r = expresie();
++p;
}
else {
r = 0;
while('0' <= *p && *p <= '9') {
r = r * 10 + *p - '0';
++p;
}
}
return r;
}
int termen() {
int r = factor();
while(*p == '*' || *p == '/')
switch(*p) {
case '*': ++p; r*=factor(); break;
case '/': ++p; r/=factor(); break;
}
return r;
}
int expresie() {
int r = termen();
while(*p == '+' || *p == '-')
switch(*p) {
case '+': ++p; r += termen(); break;
case '-': ++p; r -= termen(); break;
}
return r;
}
int main() {
f >> S;
g << expresie();
g.close();
return 0;
}