Pagini recente » Cod sursa (job #1033563) | Cod sursa (job #405094) | Cod sursa (job #1123094) | Cod sursa (job #277092) | Cod sursa (job #1856787)
# include <fstream>
# include <cstring>
using namespace std;
ifstream f ("evaluare.in");
ofstream g ("evaluare.out");
int i;
char str[ 100003 ];
int evaluare();
int termen();
int factor();
int evaluare() {
int res = termen();
while (str[ i ] == '+' || str[ i ] == '-') {
if (str[ i ] == '+')
i ++, res += termen();
else
i ++, res -= termen();
}
return res;
}
int termen() {
int res = factor();
while (str[ i ] == '*' || str[ i ] == '/') {
if (str[ i ] == '*')
i ++, res *= factor();
else
i ++, res /= factor();
}
return res;
}
int factor() {
int res = 0;
if (str[ i ] == '(') {
i ++;
res = evaluare();
i ++;
} else while(isdigit(str[ i ]))
res = res * 10 + (str[ i ] - '0'), i ++;
return res;
}
int main() {
f.getline(str, 100000);
g << evaluare() << "\n";
return 0;
}