Pagini recente » Cod sursa (job #87898) | Cod sursa (job #2412833) | Cod sursa (job #1013679) | Cod sursa (job #209975) | Cod sursa (job #1354536)
#include <fstream>
#include <cstring>
#include <cctype>
using namespace std;
int eval();
int termen();
int factor();
char sir[100005];
int pos, n;
int eval() {
int x = termen();
while (pos <= n)
if (sir[pos] == '+') {
pos++;
x += termen();
}
else if (sir[pos] == '-') {
pos++;
x -= termen();
}
else
break;
return x;
}
int termen() {
int x = factor();
while (pos <= n)
if(sir[pos] == '*') {
pos++;
x *= termen();
}
else if(sir[pos] == '/'){
pos++;
x /= termen();
}
else
break;
return x;
}
int factor() {
if (sir[pos] == '(') {
pos++;
int x = eval();
pos++;
return x;
}
int x = 0;
while (pos <= n && isdigit(sir[pos])) {
x *= 10;
x += (sir[pos] - '0');
pos++;
}
return x;
}
int main()
{
ifstream cin("eval.in");
ofstream cout("eval.out");
cin.get(sir + 1, 100005);
n = strlen(sir + 1);
pos = 1;
cout << eval() << '\n';
cin.close();
cout.close();
return 0;
}