I finished a program to convert from decimal to binary, octal and hexadecimal. Now I want to use that program as a jumping off point to show polymorphism in C++. I am just going to copy/paste the instructions I am working with so that I don't mess it up with my paraphrasing. Write a base class “number” that holds a single integer value (value of intInput) and contains one pure virtual member function, print_it(). Make this base class abstract in order to prevent its instantiation. Define three derived classes to print the value in hexadecimal, octal, and binary (overriding the print_it() method). Write a program to demonstrate the use of all the derived classes. The user should enter the value to be converted (intInput). So I am showing the finished code I did with the changes made to the binary conversion. Am I doing this right? Can anyone help?
//
#include<iostream>
using namespace std;
const int STACK_SIZE = 100;
class stack {
private:
int count; // number of items in the stack
int data[STACK_SIZE];
public:
stack();
~stack();
void push(const int item); // push an item on the stack
int pop(void); // pop item off the stack
};
stack::stack() // constructor
{
count = 0; // zero the stack
}
stack::~stack() {} // default destructor
void stack::push(const int item)
{
if (count < STACK_SIZE)
{
data[count] = item;
++count;
}
else cout << "Overflow!\n";
}
int stack::pop(void)
{
if (count >0)
{
--count;
return (data[count]);
}
else
{
cout << "Underflow!\n";
return 0;
}
}
int menu();
void toBinary();
void toOctal();
void toHex();
class number
{
public:
virtual void print_it()=0;
};
class toBin:public number
{
public:
{
int num;
int total = 0;
stack reverse; // declare a local stack!!!!!!!!!!!!!!!!!!
int ctr=0; // declare a local counter!!!!!!!!!!!!!!!
cout << "Please enter a decimal: ";
cin >> num;
cout << "The decimal number " << num << " converts to the binary number: ";
while(num > 0)
{
total = num % 2;
num /= 2;
//cout << total << " ";
reverse.push(total); // save to stack instead of printing!!!!!!!!!
ctr++; // count the number of digits saved!!!!!!!!!!!!
}
while (ctr > 0)
{
cout << reverse.pop() << " ";
ctr--;
}
}
int main()
{
int choice = menu();
switch(choice)
{
case (0):
toBinary();
break;
case (1):
toOctal();
break;
case(2):
toHex();
break;
}
return 0;
}
int menu()
{
int choice;
cout << " *****Menu***** " << endl;
cout << "Convert the number from decimal into: " << endl;
cout << "0-Binary" << endl;
cout << "1-Octal" << endl;
cout << "2-Hexadecimal" << endl;
cin >> choice;
return choice;
}
//void toBinary()
//{
// int num;
// int total = 0;
// stack reverse; // declare a local stack!!!!!!!!!!!!!!!!!!
// int ctr=0; // declare a local counter!!!!!!!!!!!!!!!
// cout << "Please enter a decimal: ";
// cin >> num;
// cout << "The decimal number " << num << " converts to the binary number: ";
// while(num > 0)
// {
// total = num % 2;
// num /= 2;
// //cout << total << " ";
// reverse.push(total); // save to stack instead of printing!!!!!!!!!
// ctr++; // count the number of digits saved!!!!!!!!!!!!
// }
// while (ctr > 0)
// {
// cout << reverse.pop() << " ";
// ctr--;
// }
//}
void toOctal()
{
int num;
int total = 0;
stack reverse; // declare a local stack!!!!!!!!!!!!!!!!!!
int ctr=0; // declare a local counter!!!!!!!!!!!!!!!
cout << "Please enter a decimal: ";
cin >> num;
cout << "The decimal number " << num << " converts to the octal number: ";
while(num > 0)
{
total = num % 8;
num /= 8;
//cout << total << " ";
reverse.push(total); // save to stack instead of printing!!!!!!!!!
ctr++; // count the number of digits saved!!!!!!!!!!!!
}
while (ctr > 0)
{
cout << reverse.pop() << " ";
ctr--;
}
}
void toHex()
{
int num,counter,x,a,hex[100];
cout<<"Please enter a decimal: ";
cin>>num;
cout<<"\nThe Decimal number "<<num<<" converts to the Hexadecimal number: ";
for(counter=0;num!=0;counter++)
{
a=num%16;
hex[counter]=a;
num=num/16;
}
for(x=counter-1;x>=0;x--)
{
if(hex[x]==10)
{
cout<<"A";
}
else if(hex[x]==11)
{
cout<<"B";
}
else if(hex[x]==12)
{
cout<<"C";
}
else if(hex[x]==13)
{
cout<<"D";
}
else if(hex[x]==14)
{
cout<<"E";
}
else if(hex[x]==15)
{
cout<<"F";
}
else
{
cout<<hex[x];
}
}
}