Код выхода 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;
}

0 ответов

Другие вопросы по тегам