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;
    }
  • 相关阅读:
    字符流与字节流的区别
    向文件尾部追加内容
    Hashmap实现原理及扩容机制详解
    HashMap的put和get方法原理
    关于数字化工厂&智能工厂建设 IT 经验总结
    @所有人,网易数字+大会报名通道正式开启!
    WinForm程序打包1之快速入门
    解决安装.NET Framework不受信任的根证书
    Cannot resolve com.sun:tools:1.8.0 错误解决
    IDEA 2020报“java:程序包XXXX不存在”或“java:找不到符号”
  • 原文地址:https://www.cnblogs.com/0515offer/p/4570073.html
Copyright © 2011-2022 走看看