@avion123678

Постфиксная запись на stack?

Дана задача:
5dffa788bdd28107143097.png
На каком тесте данный код может упасть:
#include <fstream>
#include <vector>

using namespace std;

class Stack {
public:
    bool is_empty() {
        return s_top == -1;
    }

    void push(int element) {
        s_top++;
        arr[s_top] = element;
    }

    int pop() {
        s_top--;
        return arr[s_top + 1];
    }
private:
    int s_top = -1;
    vector<int> arr = vector<int> (100);
};

int main() {

    Stack stack1;

    ifstream in("postfix.in");

    char element;
    in >> element;

    while(!in.eof()) {

        if (!isdigit(element)) {
            switch(element) {
                case '+':
                    stack1.push(stack1.pop() + stack1.pop());
                    break;
                case '-':
                    stack1.push(-(stack1.pop() - stack1.pop()));
                    break;
                case '*':
                    stack1.push(stack1.pop() * stack1.pop());
                    break;
                default:
                    ;
            }
        }
        else {
            stack1.push(atoi(&element));
        }
        in >> element;
    }
    ofstream out("postfix.out");
    out << stack1.pop();

    return 0;
}
  • Вопрос задан
  • 513 просмотров
Пригласить эксперта
Ответы на вопрос 1
maaGames
@maaGames
Погроммирую программы
7-8+ - приведёт к падению (это выражение "-7 + 8", т.е. к положительному 7 применяется унарный минус. Если унарных +- нет, то вроде не вижу проблем.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы