7.8 练习
1.将下列方法加到Fraction类,以扩展关于分数的算术运算。在每个例子中都约简结果。
//Subtract argument from receiver
-(Fraction)subtract:(Fraction)f;
//Multiply receiver by argument
-(Fraction)multiply:(Fraction)f;
//Divide receiver by argument
-(Fraction)divide:(Fraction)f;
2.从Fraction类中修改print方法,使之能够接受一个可选的BOOL参数,它表明是否应该约简该分数显示它。如果要约简它,一定不要对它进行永久更改。
3.修改代码清单7-8,将结果sum显示为分数而不是实数。
4.Fraction类对负分数适用吗?例如-1/4和-1/2能得出正确结果吗?如果想出答案,编写测试程序进行尝试。
5.修改Fraction类的print方法,以便显示比1大的分数,即5/3能显示为1 2/3。
6.第4章的练习6定义了一个名为Complex的新类,它处理带虚数的复数。添加一个名为add:的方法,它可以用来使两个复数相加。要使两个复数相加,只需将它们的实部和虚部分别相加,如下所示:
(5.3+7i)+(2.7+4i)=8+11i
根据以下方法声明,使add:方法存储并返回一个新的Complex值。
-(Complex)add:(Complex)complexNum;
一定要解决测试程序中任何可能的内存泄漏问题。
7.给定第4章练习6的Complex类和该章在练习6中所作的扩展,创建Complex.h和Complex.m接口文件和实现文件。创建单独的测试程序文件来验证。