zoukankan      html  css  js  c++  java
  • OC2_分数类

    //
    //  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:1 andDenominator:4];
        Fraction *f2 = [[Fraction alloc] init];
        [f2 setNumerator:1 andDenominator:4];
        [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 0;
    }
  • 相关阅读:
    【零基础】极星9.5量化入门二:滚动止盈策略
    【零基础】极星9.5量化入门零:简单的开始
    今天分享下移动端rem 适配
    css超出内容省略号代替。
    今天给大家的小知识点是JS的一种排序方式---快速排序
    highcharts 的基本使用
    zTree jquery-zTree的基本使用
    克隆 JS克隆
    JS判断一个对象是不是数组的几种方式
    js 定时器实现倒计时
  • 原文地址:https://www.cnblogs.com/0515offer/p/4570073.html
Copyright © 2011-2022 走看看