Pagini recente » Cod sursa (job #2901224) | Cod sursa (job #1700707) | Cod sursa (job #248679) | Cod sursa (job #2743771) | Cod sursa (job #1742418)
#include <fstream>
using namespace std;
char s[100005], *p = s;
void read();
int eval();
int termen();
int factor();
void write();
int main(){
read();
write();
return 0;
}
void read(){
ifstream fin ("evaluare.in");
fin >> s;
fin.close();
}
void write(){
ofstream fout ("evaluare.out");
fout << eval();
fout.close();
}
int eval(){
int r = termen();
while (*p == '+' || *p == '-')
switch(*p){
case '+':
++p;
r += termen();
break;
case '-':
++p;
r -= termen();
break;
}
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 factor(){
int r = 0;
if (*p == '('){
++p;
r = eval();
++p;
}
else {
while (*p >= '0' && *p <= '9'){
r = r * 10 + *p - '0';
++p;
}
}
return r;
}