#include <iostream>

using namespace std;

#define type int

class Stack {
private:
	int data[100];
	int top;
public:
	Stack() { top = -1; }
	void push(type v) { data[++top] = v; }
	type pop() { return data[top--]; }
	type peek() { return data[top]; }
	int count() { return top+1; };
	void clear() { top = -1; }
	bool isEmpty() { return (top == -1); }
};

// convert 10-base number to 2-base number
int main()
{
	int number, number10;
	cout << "Enter a base 10 number: ";
	cin >> number;
	number10=number;
	Stack mystack;

	// Push base-2 digits to Stack
	do {
		mystack.push(number % 2);
		number = number / 2;
	} while(number !=0 );

	cout<< "Base-10 digit "<< number10 << " = base-2 digit ";

	// Pop base-2 digits from Stack
	while( !mystack.isEmpty() )
		cout << mystack.pop();

	cout << endl;

	system("pause");
}


