#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main()
{
string blah("512+4*+3−");
stack<int> astack;
int a=0;
int b=0;
int result=0;
int final=0;
for (string::iterator count=blah.begin(); count != blah.end(); count=count+1)
{
if (isdigit(*count))
{
astack.push(*count);
cout<<" "<<*count<<" ";
}
else
{
a=astack.top();
astack.pop();
b=astack.top();
astack.pop();
if(*count=='+')
{
result = a+ b;
}
else if (*count=='-')
{
result=a-b;
}
else if(*count=='*')
{
result=a*b;
}
astack.push(result);
}
}
final=astack.top();
cout<<final;
}
Моя проблема - всякий раз, когда я запускаю ее, код, кажется, сегментирует ошибку. Когда я попытался запустить его с оператором, прокомментировал его, кажется, что стек поп-музыки два значения, и я не совсем уверен, почемуНаписание постфиксного калькулятора со стеком и итератором
Не забудьте сообщить нам, что строка, сообщенная вашим отладчиком, вызывает ошибку? –
Что произойдет, если первый символ не является цифрой? Он будет запрашивать верхнюю часть пустого стека. Поместите много '' '' '' '' '' '' 's' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' –
Ну, ваш знак «-» в строке 'blah', которую вы разместили, не является знаком минус. Кроме того, нельзя дублировать: http://ideone.com/xqQSmM – PaulMcKenzie