使用能够执行以下任务的面向对象编程技能来编写C ++程序。
A.如何在C ++中以数字系统作为基类并使用四个派生类来表示四个数字系统(二进制,十进制,八进制,十六进制)中的每个实现类层次结构。使用类层次结构来实现数字转换计算器。
B.您的计算器应具有以下功能:
- 取一个数字(四个基数中的任何一个),然后将其转换为指定的基数。
- 要使用运算符重载对数字进行加,减,乘和除(四个基数中的任何一个)。
现在写,我只需要更正转换部分。我已经提交了下面的类代码,但仅在一个类下提交。我希望此代码使用层次继承在更多的类下进行下面只是类而不是int main()。请帮助我将其转换为继承,即基类:数字系统派生类:Binary,Decimal,Octal,HexaDecimal。
码:
class NumberSystem
{
int BinarytoDecimal()
{
long long num;
int decimalNum, i, rem;
cout << "Enter any binary number: ";
cin >> num;
decimalNum = 0;
i = 0;
//converting binary to decimal
while (num != 0)
{
rem = num % 10;
num /= 10;
decimalNum += rem * pow(2, i);
++i;
}
cout << "Equivalent Decimal number: " << decimalNum << endl;
return decimalNum;
}
int DecimaltoOctal(int decimal)
{
long num, temp;
int oct[50], i = 1, j;
cout << "Enter a decimal number : ";
cin >> num;
temp = num;
while (temp != 0)
{
oct[i++] = temp % 8;
temp = temp / 8;
}
cout << "\nOctal equivalent of " << num << " is : "<<oct[2]<<oct[1]<<endl;
for (j = i - 1; j >= 0; j--)
cout << oct[j];
return 0;
}
void OctaltoHexa()
{
int ar1[20], ar2[20], ar3[20];
int h, i, j, k, l, x, fr, flg, rem, n1, n3;
float rem1, n2, n4, dno;
char octal_num[20];
x = fr = flg = rem = 0;
rem1 = 0.0;
cout << "\n\n Convert any octal number to a hexadecimal number:\n";
cout << "------------------------------------------------------\n";
cout << " Input any octal number: ";
cin >> octal_num;
for (i = 0, j = 0, k = 0; i < strlen(octal_num); i++)
{
if (octal_num[i] == '.')
{
flg = 1;
}
else if (flg == 0)
ar1[j++] = octal_num[i] - 48;
else if (flg == 1)
ar2[k++] = octal_num[i] - 48;
}
x = j;
fr = k;
for (j = 0, i = x - 1; j < x; j++, i--)
{
rem = rem + (ar1[j] * pow(8, i));
}
for (k = 0, i = 1; k < fr; k++, i++)
{
rem1 = rem1 + (ar2[k] / pow(8, i));
}
rem1 = rem + rem1;
dno = rem1;
n1 = (int)dno;
n2 = dno - n1;
i = 0;
while (n1 != 0)
{
rem = n1 % 16;
ar3[i] = rem;
n1 = n1 / 16;
i++;
}
j = 0;
while (n2 != 0.0)
{
n2 = n2 * 16;
n3 = (int)n2;
n4 = n2 - n3;
n2 = n4;
ar1[j] = n3;
j++;
if (j == 4)
{
break;
}
}
l = i;
cout << " The hexadecimal value of " << octal_num << " is: ";
for (i = l - 1; i >= 0; i--)
{
if (ar3[i] == 10)
cout << "A";
else if (ar3[i] == 11)
cout << "B";
else if (ar3[i] == 12)
cout << "C";
else if (ar3[i] == 13)
cout << "D";
else if (ar3[i] == 14)
cout << "E";
else if (ar3[i] == 15)
cout << "F";
else
cout << ar3[i];
}
h = j;
cout << ".";
for (k = 0; k < h; k++)
{
if (ar1[k] == 10)
cout << "A";
else if (ar1[k] == 11)
cout << "B";
else if (ar1[k] == 12)
cout << "C";
else if (ar1[k] == 13)
cout << "D";
else if (ar1[k] == 14)
cout << "E";
else if (ar1[k] == 15)
cout << "F";
else
cout << ar1[k];
}
cout << endl;
};