현우는 숫자를 좋아한다. 항상 숫자를 가지고 장난을 하고 숫자로 무언가 만들기를 취미생활로 즐기고 있다.
하루는 어떤 숫자를 쓰고, 그 수를 거꾸로 쓰기로 했다.
어떤 수 N이 입력되면 그 수를 거꾸로 출력하는 프로그램을 작성하시오.
#include <iostream>
using namespace std;
enum { eMaxCount = 1001, eInvalid = -1 };
class Stack
{
public:
Stack()
: muTopIndex(0u)
{
}
void Push(int _iData)
{
if (eMaxCount <= muTopIndex)
{
cout << "Stack overflow!" << endl;
return;
}
miarrData[++muTopIndex] = _iData;
}
bool IsEmpty(void)
{
return 0 == muTopIndex;
}
int Top(void)
{
if (true == IsEmpty())
{
cout << "Stack underflow!" << endl;
return eInvalid;
}
return miarrData[muTopIndex];
}
void Pop(void)
{
if (true == IsEmpty())
{
cout << "Stack underflow!" << endl;
return;
}
--muTopIndex;
}
private:
int miarrData[eMaxCount];
unsigned int muTopIndex;
};
void PushNum(int _Num, Stack* _Stack)
{
if (_Num < 10)
{
_Stack->Push(_Num);
}
else
{
PushNum(_Num / 10, _Stack);
_Stack->Push(_Num - ((_Num / 10) * 10));
}
}
// 코드업 1714
int main()
{
int a = 0;
cin >> a;
Stack* NewStack = new Stack();
if (a >= 0)
{
PushNum(a, NewStack);
while (false == NewStack->IsEmpty())
{
cout << NewStack->Top();
NewStack->Pop();
}
}
}
멋져욥