Pagini recente » Cod sursa (job #1383441) | Cod sursa (job #280638) | Cod sursa (job #1880240) | Cod sursa (job #1885896) | Cod sursa (job #3140425)
#include <fstream>
#include <string>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
string str;
int plusminus(string &str, int &position);
int divmul(string &str, int &position);
int concatbr(string &str, int &position);
int plusminus(string &str, int &position){
int nr = divmul(str, position);
while (str[position] == '+' || str[position] == '-'){
position += 1;
if (str[position - 1] == '+') {
nr += divmul(str, position);
} else {
nr -= divmul(str, position);
}
}
return nr;
}
int divmul(string &str, int &position){
int nr = concatbr(str, position);
while (str[position] == '*' || str[position] == '/'){
position += 1;
if (str[position - 1] == '*'){
nr *= concatbr(str, position);
} else {
nr /= concatbr(str, position);
}
}
return nr;
}
int concatbr(string &str, int &position){
int nr = 0;
if (str[position] == '('){
position += 1;
nr = plusminus(str, position);
position += 1;
} else {
while (str[position] >= '0' && str[position] <= '9'){
nr *= 10;
nr += str[position] - 48;
position += 1;
}
}
return nr;
}
int main(){
string str;
cin >> str;
int position = 0;
cout << plusminus(str, position);
}