Lập Trình C/C++ - Binary to Hex using Public Inheritance

#Code:
#include<iostream>
using namespace std;

class todecimal
{
 /* Private variable; not inheritable */
 int decimal;

 /* Public members; ready for inheritance */
 public:
  todecimal(int binary)
  {
   int reminder, i = 1;
   decimal = 0;
   while(binary != 0)
   {
    reminder = binary % 10;
    decimal += reminder * i;
    i *= 2;
    binary /= 10;
   }
 
  }
 
  inline int get_decimal()
  {
   return decimal;
  }
 
  inline void display_decimal()
  {
   cout << "Decimal: " << get_decimal() << endl;  
  }

};

/* Inherit parent class into child class using ':' */
/* public derivation */
class tohex : public todecimal
{
 int i, value, decimal;
 char hex[20];
 public:
  /* Call constructor "todecimal" */
  tohex(int binary) : todecimal(binary)
  {
   i = 0;
   decimal = get_decimal();
   while(decimal != 0)
   {
    value = (decimal % 16);
    switch(value)
    {
     case 10:
      hex[i] = 'A';
      break;
     case 11:
      hex[i] = 'B';
      break;
     case 12:
      hex[i] = 'C';
      break;
     case 13:
      hex[i] = 'D';
      break;
     case 14:
      hex[i] = 'E';
      break;
     case 15:
      hex[i] = 'F';
      break;
     default:
      hex[i] = value + '0';
      break;
    }
    decimal /= 16;
    i++;
   }
   hex[i] = '\0';
  }

  inline void display_hex()
  {
   int counter = 0;
   cout << "Hex: ";
   while(hex[counter] != '\0')
    counter++;
   for(int i = counter-1; i >= 0; i--)
    cout << hex[i];
   cout << endl;
  }
};

int main()
{
 int binary;
 cout << "Please enter a Binary number:" << endl;
 cin >> binary;
 tohex hex(binary);

 /* Access parent member function by public derivation */
 hex.display_decimal();
 hex.display_hex();
 return 0;
}

0 Comment:

Đăng nhận xét

Thank you for your comments!