Pagini recente » Cod sursa (job #3323746) | Cod sursa (job #1419005) | Cod sursa (job #1419092) | Cod sursa (job #3326545) | Cod sursa (job #3312959)
#include <iostream>
#include <fstream>
#include <stdint.h>
const int32_t MAX_LEN = 100000;
int32_t ind = 0;
char str[MAX_LEN + 1];
int32_t ReadAdd();
int32_t ReadVal() {
if(str[ind] == '(') {
++ind;
int32_t res = ReadAdd();
++ind;
return res;
} else {
int32_t res = 0;
for(; str[ind] >= '0' && str[ind] <= '9'; ++ind)
res = res * 10 + (str[ind] - '0');
return res;
}
}
int32_t ReadMult() {
int32_t res = ReadVal();
while(str[ind] == '*' || str[ind] == '/') {
char op = str[ind++];
if(op == '*') {
res *= ReadVal();
} else {
res /= ReadVal();
}
}
return res;
}
int32_t ReadAdd() {
int32_t res = ReadMult();
while(str[ind] == '+' || str[ind] == '-') {
char op = str[ind++];
if(op == '+') {
res += ReadMult();
} else {
res -= ReadMult();
}
}
return res;
}
int main() {
std::ifstream fin("evaluare.in");
std::ofstream fout("evaluare.out");
fin >> str;
fout << ReadAdd();
fin.close();
fout.close();
return 0;
}