#include <iostream.h>
#include <stdlib.h>
const int MaxStackSize = 50;
typedef int DataType;
class Stack
{
private:
DataType stacklist[MaxStackSize];
int top;
public:
Stack(void);
void Push(const DataType& item);
DataType Pop(void);
void ClearStack(void);
DataType Peek(void) const;
int StackEmpty(void) const;
int StackFull(void) const;
};
Stack::Stack()
{
top = -1;
}
void Stack::Push(const DataType& item)
{
if (top == MaxStackSize - 1)
{
cerr << "Stack overflow" << endl;
exit(1);
}
stacklist[++top] = item;
}
DataType Stack::Pop()
{
DataType temp;
if (top == -1)
{
cerr << "Attempt to pop an empty stack" << endl;
exit(1);
}
temp = stacklist[top--];
return temp;
}
DataType Stack::Peek(void) const
{
DataType temp;
if (top == -1)
{
cerr << "Attempt to pop an empty stack" << endl;
exit(1);
}
temp = stacklist[top];
return temp;
}
int Stack::StackEmpty() const
{
return top == -1;
}
int Stack::StackFull() const
{
return top == MaxStackSize - 1;
}
void Stack::ClearStack()
{
top = -1;
}
//¶à½øÖÆ×ª»»Ëã·¨
void MultibaseOutput(long num, int b)
{
Stack s;
do
{
s.Push(num % b);
num /= b;
} while (num != 0);
while (!s.StackEmpty())
{
cout << s.Pop();
}
}
void main()
{
long num;
int b;
for (int i = 0; i < 3; i++)
{
cout << "Enter non-negative decimal number and base";
cin >> num >> b;
cout << num << " base " << b << " is ";
MultibaseOutput(num, b);
cout << endl;
}
}