题:改变第七章例子中print方法,增加bool参数,判断如果是YES则对分数进行约简

 @interface Fraction : NSObject
{
//int num,den; }
@property int num,den;//定义属性 - (void) print:(BOOL) yesOrNo;//打印并判断是否约简分数
//- (void) setN: (int) n;//设置n的值
//- (void) setD: (int) d;//设置d的值
//- (int) n;//返回n的值
//- (int) d;//返回d的值
- (void) setN: (int) n andSetD: (int) d;//2个参数的方法分别设置n和d的值
- (double) convertToNum;
- (void) add: (Fraction *) f;//分数相加方法
- (void) reduce;//分数约简方法
- (Fraction *) addFraction: (Fraction *) f;//加
- (Fraction *) subFraction: (Fraction *) f;//减
- (Fraction *) mulFraction: (Fraction *) f;//乘
- (Fraction *) divFraction: (Fraction *) f;//除
@end #import "Fraction.h" @implementation Fraction @synthesize num,den;//属性对应@property num,den - (void) print: (BOOL) yesOrNo//打印
{
if (yesOrNo == YES) {
[self reduce];
}
NSLog(@"%i/%i",num,den);
}
//- (void) setN: (int) n//设置n的值
//{
// num = n;
//}
//- (void) setD: (int) d//设置d的值
//{
// den = d;
//}
//- (int) n//返回n的值
//{
// return num;
//}
//- (int) d//返回d的值
//{
// return den;
//} - (void) setN: (int) n andSetD: (int) d
{
num = n;
den = d; }
- (double) convertToNum
{
if (den != )
{
return (double) num/den; }
else
{
return NAN; }
} - (void) add: (Fraction *) f
{
//分数相加:a/b + c/d = ((a*d) + (b*c)) / (b*d) num = num * f.den + den * f.num;
den = den * f.den; [self reduce];
} - (void) reduce
{
int u = num;
int v = den;
int temp; while (v != )
{
temp = u % v;
u = v;
v = temp; }
num /= u;
den /= u;
} //加法
- (Fraction *) addFraction: (Fraction *) f
{
Fraction *result = [[Fraction alloc]init]; result.num = num * f.den + den * f.num; result.den = den * f.den; [result reduce]; return result; } //减法
- (Fraction *) subFraction: (Fraction *) f
{
Fraction *result = [[Fraction alloc]init]; result.num = num * f.den - den * f.num;
result.den = den * f.den; [result reduce]; return result; } //乘法
- (Fraction *) mulFraction: (Fraction *) f
{
Fraction *result = [[Fraction alloc]init]; result.num = num * f.num;
result.den = den * f.den; [result reduce]; return result;
} //除法
- (Fraction *) divFraction: (Fraction *) f
{
//计算分数除以分数,第一个分数乘以第二个分数的倒数:1/2除以3/2 = 1/2 * 2/3
Fraction *result = [[Fraction alloc]init]; result.num = num * f.den;
result.den = den * f.num; //[result reduce]; return result;
}
@end #import <Foundation/Foundation.h>
#import "Fraction.h" int main(int argc, const char * argv[]) {
@autoreleasepool {
Fraction *myF = [[Fraction alloc]init];
Fraction *myF_2 = [[Fraction alloc]init];
Fraction *myResult; [myF setN: andSetD:];
[myF_2 setN: andSetD:]; myResult = [myF subFraction:myF_2];
//[myResult print]; myResult = [myF mulFraction:myF_2];
//[myResult print]; myResult = [myF divFraction:myF_2]; int i;//定义整型变量i记录输入值
BOOL b;//定义BOOL类型通过i值传递判断yes or no
NSLog(@"Need to Simple? 1 or 0");
//NSLog(@"ifReadOnly value: %@" ,ifReadOnly?@"YES":@"NO");
scanf("%i",&i);
b = i;//将i值赋给b
[myResult print:b]; }
return ;
}

objective-c第七章课后练习2的更多相关文章

  1. 视觉slam十四讲第七章课后习题6

    版权声明:本文为博主原创文章,转载请注明出处: http://www.cnblogs.com/newneul/p/8545450.html 6.在PnP优化中,将第一个相机的观测也考虑进来,程序应如何 ...

  2. 视觉slam十四讲第七章课后习题7

    版权声明:本文为博主原创文章,转载请注明出处:http://www.cnblogs.com/newneul/p/8544369.html  7.题目要求:在ICP程序中,将空间点也作为优化变量考虑进来 ...

  3. objective-c第七章课后练习3

    题:Fraction类对负分数适用吗?例如:1/4-1/2 能否显示成-1/4? //--------类定义实现参考上篇随笔,此处需更改print方法和main主方法部分---------- - (v ...

  4. java基础 第七章课后习题

    1.改正后的应该为: String [] scores= new String[5];    或者 String [] scores={ “ Mike”,"Lily" ," ...

  5. c++ primer plus 第七章 课后题答案

    #include <iostream> using namespace std; double HAR_AVG(double, double); void TEST(bool); int ...

  6. C primer plus 读书笔记第六章和第七章

    这两章的标题是C控制语句:循环以及C控制语句:分支和跳转.之所以一起讲,是因为这两章内容都是讲控制语句. 第六章的第一段示例代码 /* summing.c --对用户输入的整数求和 */ #inclu ...

  7. [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第二章~第七章

    在看完<Objective-C 程序设计 第6版>之后,看了一些关于iOS开发职位的面试题,发现自身基础非常是不牢,于是打算以查缺补漏的方式阅读还有一本关于Objective-C的基础书籍 ...

  8. 第七章终结篇——8251A的总结

    总算把这个第七章复习完了,我把剩下一点关于8251A的发上来吧 本来在讲解8251A书本上还有关于RS232和串口通信的讲解,但是太浅了,就不放了,有兴趣的朋友可以自行参考其他文章 串行通信芯片825 ...

  9. 【知识强化】第七章 输入/输出系统 7.1 I/O系统基本概念

    那么下面,我们将要进入计算机组成原理的最后一章,也就是我们的第七章,输入输出系统的学习.那么这一部分内容呢,我们之前呢一直在提,但是并没有详细地讲解,那么进入到我们第七章输入输出系统这一部分,我们就要 ...

随机推荐

  1. 1.0 多控制器管理(附:Demo)

    本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末 如果觉得本文内容过长,请前往本人 “简书”       控制器 :   一个iOS的app很少只由一个控制器组成,除非这个app极其简 ...

  2. Spark RDD 多文件输入

    1.将多个文本文件读入一个RDD中 SparkConf conf=new SparkConf() .setMaster("local") .setAppName("sav ...

  3. ajax详细介绍

    a.什么是Ajax    Asynchronous JavaScript and XML(异步JavaScript和XML)     节省用户操作,时间,提高用户体验,减少数据请求    传输获取数据 ...

  4. 常用SQL脚本操作

    SQL 脚本创建数据库.表及简单查询 --------------------------------------------------------------------------------- ...

  5. 《bootstrap》实战---作为了解

    感觉这句话说的挺有道理,"一些最佳实践不管是语义标记还是移动优先的设计,抑或资源性能优化,都需要额外的时间和精力才能时间".用心做,才会做好.

  6. stl循环删除

    struct st_data { st_data(int i) : id(i) {} int id; }; 对于STL标准序列容器vector/deque/list(以vector为例) 当我们需清空 ...

  7. GIT如何添加权限模块

    http://blog.chinaunix.net/uid-15174104-id-3843570.html

  8. Spring-Aop入门

    (一)Aop术语定义 1.通知(advice) 通知定义了切面要做什么工作,即调用的方法,同时定义了什么时候做这些工作,即以下五种类型 (1)前置通知(Before) :在目标方法调用之前执行切面方法 ...

  9. oracle 11g RAC 补丁升级方法

    一.自动升级方法 使用auto方式在两节点分别进行PSU的安装,安装PSU前注意更新opatch工具至PSU所要求版本,p22191577补丁包括GI和DB,分别执行即可. 两节点分别grid用户执行 ...

  10. 【RabbitMQ】 WorkQueues

    消息分发 在[RabbitMQ] HelloWorld中我们写了发送/接收消息的程序.这次我们将创建一个Work Queue用来在多个消费者之间分配耗时任务. Work Queues(又称为:Task ...