Любое выражение, которое содержит (например, (5 + 6) ошибку времени выполнения, не знает, почему … Я много отслеживал программу, но не смог найти ошибку … мой код:
int main() {
string infix, temp = "";
cin >> infix;
stack<char> S;
for (int i = 0; i < infix.length(); i++){
if (infix[i] == '+' || infix[i] == '-' || infix[i] == '*' || infix[i] == '/'){
if (!S.empty() && priority(S.top()) <= priority(infix[i])){
while (!S.empty()){
temp += S.top();
S.pop();
}
}
S.push(infix[i]);
}
else if (infix[i] == '('){
S.push(infix[i]);
}
else if (infix[i] == ')'){
while (!S.empty() && S.top() != '('){
temp += S.top();
S.pop();
}
S.pop();
}
else
temp += infix[i];
}
while (!S.empty()){
temp += S.top();
S.pop();
}
cout << temp << endl;
}
заранее спасибо 🙂
Задача ещё не решена.
Других решений пока нет …