#include #include "stack.h" using namespace std; int main() { int n; cout << "n = "; cin >> n; stack *s = NULL; // Так как в int не помещаются числа длиной более 10 // знаков, буфера такого размера будет достаточно. char* buf = new char[16]; for (int i = 0; i < n; i++) { cin >> buf; // Если первый элемент буфера -- цифра, то можно считать, что // в буфере находится число и его нужно преобразовать в int. if ('0' <= buf[0] && buf[0] <= '9') { int i = atoi(buf); push(s, i); } // Иначе, скорее всего, в буфере находится операция. // Если первый символ не является допустимой операцией, // то ничего не происходит. else { switch (buf[0]) { case '+': { int o1 = pop(s); int o2 = pop(s); push(s, o2 + o1); } break; case '-': { int o1 = pop(s); int o2 = pop(s); push(s, o2 - o1); } break; case '*': { int o1 = pop(s); int o2 = pop(s); push(s, o2 * o1); } break; } } } // В результате выполнения выражения в стеке должно остаться одно число. int result = pop(s); cout << "Result = " << result << endl; return 0; }