//
// Fraction.h
// OC2_分数类
//
// Created by zhangxueming on 15/6/10.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h> @interface Fraction : NSObject
{
NSInteger _numerator;
NSInteger _denominator;
} - (id)initWithNumerator:(NSInteger)aNumerator andDenominator:(NSInteger)aDenominator; - (NSInteger)numerator;
- (NSInteger)denominator; - (void)setNumerator:(NSInteger)aNumerator;
- (void)setDenominator:(NSInteger)aDenominator;
- (void)setNumerator:(NSInteger)aNumerator andDenominator:(NSInteger)aDenominator; - (void)addFraction:(Fraction *)aFraction;
- (void)subFraction:(Fraction *)aFraction;
- (void)mulFraction:(Fraction *)aFraction;
- (void)divFraction:(Fraction *)aFraction; - (void)reduceFraction; - (void)printFraction; + (void)testFraction; @end
//
// Fraction.m
// OC2_分数类
//
// Created by zhangxueming on 15/6/10.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import "Fraction.h" @implementation Fraction - (id)initWithNumerator:(NSInteger)aNumerator andDenominator:(NSInteger)aDenominator
{
if (self = [super init]) {
_numerator = aNumerator;
_denominator = aDenominator;
}
return self;
} - (NSInteger)numerator
{
return self->_numerator;
}
- (NSInteger)denominator
{
return self->_denominator;
} - (void)setNumerator:(NSInteger)aNumerator
{
self->_numerator = aNumerator;
}
- (void)setDenominator:(NSInteger)aDenominator
{
self->_denominator = aDenominator;
} - (void)setNumerator:(NSInteger)aNumerator andDenominator:(NSInteger)aDenominator
{
self->_numerator = aNumerator;
self->_denominator = aDenominator;
} - (void)addFraction:(Fraction *)aFraction
{
self->_numerator = [self numerator] * [aFraction denominator] + [self denominator] * [aFraction numerator];
self->_denominator = [self denominator] * [aFraction denominator];
}
- (void)subFraction:(Fraction *)aFraction
{
self->_numerator = [self numerator] * [aFraction denominator] - [self denominator] * [aFraction numerator];
self->_denominator = [self denominator] * [aFraction denominator];
} - (void)mulFraction:(Fraction *)aFraction
{
_numerator = [self numerator] * [aFraction numerator];
_denominator = [self denominator] * [aFraction denominator];
} - (void)divFraction:(Fraction *)aFraction
{
_numerator = [self numerator] * [aFraction denominator];
_denominator = [self denominator] * [aFraction numerator];
} - (void)reduceFraction
{
NSInteger n = _numerator;
NSInteger d = _denominator;
while (d) {
NSInteger temp = n%d;
n = d;
d = temp;
}
_numerator /= n;
_denominator /= n;
} - (void)printFraction
{
NSLog(@"%ld/%ld", [self numerator], [self denominator]);
} + (void)testFraction
{
Fraction *f1 = [[Fraction alloc] initWithNumerator: andDenominator:];
Fraction *f2 = [[Fraction alloc] init];
[f2 setNumerator: andDenominator:];
[f1 addFraction:f2];
[f1 reduceFraction];
[f1 printFraction];
}
@end
//
// main.m
// OC2_分数类
//
// Created by zhangxueming on 15/6/10.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h>
#import "Fraction.h" int main(int argc, const char * argv[]) {
@autoreleasepool {
[Fraction testFraction];
}
return ;
}

OC2_分数类的更多相关文章

  1. 连分数(分数类模板) uva6875

    //连分数(分数类模板) uva6875 // 题意:告诉你连分数的定义.求连分数,并逆向表示出来 // 思路:直接上分数类模板.要注意ai可以小于0 #include <iostream> ...

  2. 第十七周oj刷题——Problem B: 分数类的四则运算【C++】

    Description 编写分数类Fraction,实现两个分数的加.减.乘和除四则运算.主函数已给定. Input 每行四个数,分别表示两个分数的分子和分母,以0 0 0 0 表示结束. Outpu ...

  3. Problem F: 分数类的类型转换

    Description 封装一个分数类Fract,用来处理分数功能和运算,支持以下操作:   1. 构造:传入两个参数n和m,表示n/m:分数在构造时立即转化成最简分数. 2. show()函数:分数 ...

  4. Problem E: 分数类的输出

    Problem E: 分数类的输出 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2699  Solved: 1227[Submit][Status][ ...

  5. java的分数类

    概述 分数类在算法中非常重要, 而在java中不那么重要,java基础类库提供 了biginteger了,提供类似方式, package 组合数学; public class Fraction { p ...

  6. UVA 10288 Coupons---概率 && 分数类模板

    题目链接: https://cn.vjudge.net/problem/UVA-10288 题目大意: 一种刮刮卡一共有n种图案,每张可刮出一个图案,收集n种就有奖,问平均情况下买多少张才能中奖?用最 ...

  7. 【Java例题】2.2 分数类

    2.定义分数类,包括分子和分母变量.构造方法. 加减乘除方法.化简方法.值计算方法和显示分子和分母的方法. 然后编写一个主类,在其主方法中通过定义两个分数对象来 显示每一个分数的分子值.分母值.化简和 ...

  8. 【作品】超实用C++分数类

    引言 我们说,编程语言的精髓在于封装,而面向对象语言完胜面向过程语言的原因就是具有更好的可封装性,而C++就是这样的一种多范型语言,常用而复杂的工作完全不必在每一份源文件中重敲,就好像我们不需要自己手 ...

  9. hdu 6206 : Apple 【计算几何 + 分数类】

    题目链接 比赛时C++上__float128都被卡精度,然后扔给队友用Java的BigDecimal过了 算法不多说,求三角形外心可以参考 维基百科 https://zh.wikipedia.org/ ...

随机推荐

  1. whu 1464 deal with numbers

    WHU 1464  deal with numbers 题意: 给你一串数字,对着串数字有三项操作: Minus a,b,c:对区间[a,b]总的每个数都减c. Division a,b,c:对区间[ ...

  2. 我的JS 类 写法

    长这样! var p,p1; //构造函数 function Person(name) { this.name = name; } //原型对象 var proto = { getName : fun ...

  3. 【C++编程规范】编程需要避免的常见错误

    前言 C++有不少陷阱或者容易失误的地方,稍不注意就会导致程序bug. 正文 1.无符号数和有符号数比较 #define只是简单的文本替换,如果替换的是简单数值,默认是int,和unsigned in ...

  4. 判断一个Bitmap图像是否是.9图

    见BitmapFactory的源码中 byte[] np = bm.getNinePatchChunk();  final boolean isNinePatch = np != null & ...

  5. iOS 根据文件名获取到文件路径

    根据文件名来获取文件路径(Document目录下) //根据文件名来获取文件路径 - (NSString *)dataFilePath:(NSString *)sender { NSArray *pa ...

  6. POJ 2003 Hire and Fire (Tree)

    题目:Hire and Fire 题目翻译成数据结构就是:建树,加结点,删除结点,打印结点.只有删除结点稍微复杂点,因为删除设计掉树的调整. 首先要考虑树怎么存储才能使解题更顺手. 1.我们要存储每个 ...

  7. [置顶] ORACLE分析函数(1)

    分析函数式ORACLE提供的用来进行数据统计的强有力工具,与我们常用的聚合函数具有一些相似性,但又完全不同.聚合函数,首先会将数据进行分组,然后对每一组数据进行运算,如求和sum,求平均AVG等,对于 ...

  8. 给定一个字符串,仅由a,b,c 3种小写字母组成。

    package com.boco.study; /** * 题目详情 给定一个字符串,仅由a,b,c 3种小写字母组成. 当出现连续两个不同的字母时,你可以用另外一个字母替换它,如 有ab或ba连续出 ...

  9. linux 常识笔记 20160621

    Linux分四部分 Linux内核 GNU工具组建 图形化桌面环境 应用软件 Linux系统的核心是内核,内核控制着计算机系统上的所有硬件和软件:必要时分配硬件,有需要时执行软件. 内核负责四项主要功 ...

  10. Asp.Net 5使用第三方容器

    这几天在学习Asp.Net 5,现在文档以及博客之类的资料实在太少了,不看源码几乎举步维艰,好在全都是开源的,看看微软的代码也获益良多. 看到DependencyInjection的代码里除了默认的容 ...