Стек. Проблемът в компютъра или в кода е?
Здравейте!
Имам проблем с една задача, която при стартиране и въвеждане на число, което да не е просто не иска да събере числата . НАПРИМЕР: 123->1+2+3. Програмата продължава да работи без да спре след въвеждане на числото. На някои компютри работи, на други не. Благодаря предварително!
Код:
#include <iostream>
using namespace std;
class stack
{
public:
stack();
void push(int);
void pop();
int top();
bool empty();
void display();
private:
int n;
int a[20];
};
stack num(int x)
{
stack s;
while(x);
{
s.push(x%10);
x=x/10;
}
return s;
}
int main()
{
int n;
cout<<"Number= ";
cin>>n;
num(n).display();
return 0;
}
stack::stack()
{
n=0;
a[0]=0;
}
void stack::push(int x)
{
n++;
a[n]=x;
}
void stack::pop()
{
if(!empty())n--;
else cout<<"Empty stack!"<<endl;
}
int stack::top()
{
return a[n];
}
bool stack::empty()
{
return n==0;
}
void stack::display()
{
int s=0;
while(!empty())
{
cout<<top();
if(n!=1)cout<<"+";
s=s+top();
pop();
}
cout<<"="<<s;
cout<<endl;
}