回 帖 发 新 帖 刷新版面

主题:小弟这有道很不错的程序题,请各位高手帮忙解决!谢谢!

标准C++的内部数据类型int在Win32平台下占用4个字节存储数据(sizeof(int) = 4),
其能够表达的整数范围为:-2147483648 — 2147483647 (-2^15 — 2^15-1)。

现请设计出一个新的数据类型(class MyInt),使其能够完成任意整数间的基本运算。 并再设计一个新的数据类型(class ComplexInt),使其能够完成任意复数(限制

条件:复数的实部和虚部都均为整数)之间的基本运算。

要求:
1. 定义一个新类(class MyInt),使其能够实现任意位整数间的加法和减法。
2. 定义一个新类(class ComplexInt),用于实现任意复数(限制条件:复数的实部和虚部都均为整数)间的加法和减法。
3. 能够通过类似于如下的语句,并在屏幕上输出正确的结果。

void main(int argc, char* argv[])
{
MyInt iM("1234567890123"); // 整数对象初始化
MyInt iN("-3210987654321");
MyInt iResult1;
iResult1 = iM;
iResult1 += iN; // 整数加法操作
MyInt iResult2 = iM;
iResult2 -= iN; // 整数减法操作
// 结果输出
Display(iResult1); // iResult1: -1976419764198
Display(iResult2); // iResult2: 4445555544444

// 实部: 1234567890123;虚部: 4445555544444
ComplexInt ciM("1234567890123", "4445555544444"); // 复数对象初始化
// 实部: -4445555544444;虚部: 0
ComplexInt ciN("-4445555544444"); // 复数对象初始化
ComplexInt ciResult1 = ciM;
ComplexInt ciResult2 = ciM;
ciResult1 += ciN; // 复数加法操作
ciResult2 -= ciN; // 复数减法操作
// 结果输出
Display(ciResult1);
Display(ciResult2);
}

其中,Display为一个全局函数,它可以根据所代入的参数类型进行相应的结果输
出(代入的参数是MyInt,则输出相应的整数;代入的是ComplexInt,则输出相应复
数的实部和虚部)。

得到的屏幕输出应该为:

This is MyInt::Display, the result is: -1976419764198
This is MyInt::Display, the result is: 4445555544444
This is ComplexInt::Display, the result is: -3210987654321 + 4445555544444 i
This is ComplexInt::Display, the result is: 5680123434567 + 4445555544444 i

4. 需要考虑程序的稳定性(各种错误处理)及健壮性(算法是否对所有的整数都适用),不能有内存泄漏

回复列表 (共1个回复)

沙发

queshi 确实不错

我来回复

您尚未登录,请登录后再回复。点此登录或注册