У меня есть этот код:
#include <iostream>
#include <string>
#include “stack.h”
int main (int argc, char *argv[]) {
char *a = argv[1];
int N = strlen(a);
stack<int> polish(N); int el;
for (int i = 0; i < N; i++){
if (a[i] == '+'){
el = polish.readStack(); polish.outofStack();
polish.inStack( el + polish.readStack()); polish.outofStack()
}
if (a[i] == '*'){
el = polish.readStack(); polish.outofStack();
polish.inStack(el * polish.readStack()); polish.outofStack()
}
if ((a[i] >= '0') && (a[i] <= '9')){
el = polish.readStack(); polish.outofStack()
polish.inStack(10 * el + (a[i++]-'0'));
}
}
cout << polish.outofStack() << endl;
}
Как это работает? И что означает эта строчка?
polish.inStack(10 * el + (a[i++]-'0'));
stack
. Общеизвестной практикой является вызов методовpush
иpop
, но неreadStack
иinStack
. Кроме того,pop
должен автоматически удалять последний элемент без вызоваoutOfStack
. - person Yeldar Kurmangaliyev   schedule 03.07.2015polish.inStack(10 * el + (a[i++]-'0'));
если вы предполагаете, чтоstack<int>::readStack()
возвращаетint
, это будет означать, что вы передаете 10 * результат этого вызова + следующий символ, который был задан в качестве входных данных дляstack<int>::inStack();
- person Floris Velleman   schedule 03.07.2015inStack
этоpush
,readStack
этоtop
,outOfStack
этоpop
. - person molbdnilo   schedule 03.07.2015