//
// 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. 单独批次性任务采用MySQL定时器解决需求

    有时候我们在开发的时候会遇到一些需求是在某个固定的时间段实现某些特殊功能,只做一次或者有规律的每分钟一次每小时一次,那么这个时候我们可以启用MySQL的定时器来帮忙解决该问题. 比如,有一个场景是要求 ...

  2. [开心IT面试题] realloc用法

    C++面试题中另一个大板块——内存管理,主要有malloc(free).new(delete).calloc.realloc等.今天来说说realloc的用法. 1.头文件 #include < ...

  3. Asp.Net事务和异常处理:

    Asp.Net事务和异常处理: 一.什么是事务处理? 事务处理是一组组和成逻辑工作单元的数据库操作,虽然系统中可能会出错,但事务将控制和维护每个数据库的一致性和完整性. 如果在事务过程中没有遇到错误, ...

  4. HDU4279(2012年天津网络赛---数论分析题)

    题目:Number 题意: 给出一个f(x),表示不大于x的正整数里,不整除x且跟x有大于1的公约数的数的个数.定义F(x),为不大于x的正整数里,满足f(x)的值为奇数的数的个数.题目就是求这个F( ...

  5. HDU 4608 I-number(模拟)

    I-number Time Limit: 5000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述 The I-number of x is defined t ...

  6. jquery html标签的链式语法

    <div id="ProductNet"> <table border='0' cellspacing='2' cellpadding='0' style='te ...

  7. [AngularJS] Transclude -- using what existing in DOM to replace the template elements in directive

    var app = angular.module("phoneApp", []); app.controller("AppCtrl", function($sc ...

  8. android学习日记19--四大组件之Services(服务)

    一个Android应用主要由四个基本组件组成,Android四大基本组件分别是Activity,Content Provider内容提供者,Service服务,BroadcastReceiver广播接 ...

  9. linux 命令学习日记 20160621

    1.cat /proc/meminfo 观察Linux系统上虚拟内存的当前状态 2.ipcs -m ipcs命令专门用来查看系统上的当前共享内存页面 3.ls /dev -al sda* ttyS* ...

  10. CSS3 旋转的八卦图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...