Код выхода C++ 139 в алгоритме маневрового двора
Я работаю над алгоритмом Shunting-ярда в C++, но не могу избавиться от Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
ошибка. Я понятия не имею, как это исправить, if
Заявление выглядит хорошо для меня:/
Ввод: 6 ^ 3 - программа работает нормально, Ввод: 6/3 - выдает ошибку, когда вывод должен быть 6 3 /
string reversedONP() {
map<char, int> priorytet;
priorytet['('] = 0;
priorytet[')'] = 1;
priorytet['+'] = 1;
priorytet['-'] = 1;
priorytet['*'] = 2;
priorytet['/'] = 2;
priorytet['^'] = 3;
stack<char> stack;
cout << "Wprowadz wyrazenie do skonwertowania na ONP: ";
string wyrazenie = "6 / 3";
string wyjscie = "";
stringstream ss;
/* Storing the whole string into string stream */
ss << wyrazenie;
/* Running loop till the end of the stream */
string temp;
int found;
char znak;
while (!ss.eof()) {
/* extracting word by word from stream */
ss >> temp;
/* Checking the given word is integer or not */
if (stringstream(temp) >> found) {
wyjscie += to_string(found);
wyjscie += " ";
}
if (stringstream(temp) >> znak) {
if (znak == '^') {
stack.push('^');
}
/* It causes the problem */
if (znak == '/') {
while (priorytet['/'] <= priorytet[stack.top()] && !stack.empty()) {
wyjscie += stack.top();
wyjscie += " ";
stack.pop();
}
stack.push('/');
}
}
/* To save from space at the end of string */
temp = "";
}
while(!stack.empty()) {
wyjscie += stack.top();
wyjscie += " ";
stack.pop();
}
cout << "Wynik: ";
return wyjscie;
}