A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈流 中级黑马   /  2015-10-11 17:58  /  795 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我们需要储存多个分数,这样就需要我们应用Objective-C语言编写一个分数类(Fraction),并且对这个类进行实例化并使用对象。
(1)        类中包含两个属性分别为分子(numerator)和分母(denominator),分子和分母都为int型。
(2)        为这个分数类编写setNumerator方法对分子进行赋值。
(3)        setDenominator方法对分母进行赋值。
(4)        getNumerator方法获取分子。
(5)        getDenominator方法获取分母。
(6)        print方法用来显示分数。
向(Fraction)类添加add方法(含有一个(Fraction*)类型的形参,无返回值)和sub方法(含有一个(Fraction*)类型的形参,无返回值),分别用于实现分数的加法和减法

*/
//不要该变对象自身的参数值
#import <Foundation/Foundation.h>
@interface Fraction:NSObject
{
@public
    int _numerator;
    int _denominator;
}
-(void)setNumerator:(int)numerator;
-(void)setDenominator:(int)denominator;
-(int)getNumerator;
-(int)getDenominator;
-(void)print;
-(void)add:(Fraction *)f;
-(void)sub:(Fraction *)f;
@end

@implementation Fraction

-(void)setNumerator:(int)numerater{
    _numerator=numerater;
}
-(void)setDenominator:(int)denominator{
    _denominator=denominator;
}
-(int)getNumerator{
    return _numerator;
}
-(int)getDenominator{
    return _denominator;
}
-(void)print{
    int m,n;
    if(_denominator==_numerator)
    {
        NSLog(@"1");
    }
    else if(_denominator>_numerator)
    {  m=_denominator;
        n=_numerator;}
    else
    {
        n=_denominator;
        m=_numerator;
    }
    if(m!=n&&_denominator!=0){
        if(_numerator==0){
            NSLog(@"0");
        }
        else{
            
            while(n>1){
                int r=m%n;
                if (r==0) {
                    break;
                }
                m=n;
                n=r;
            }
            int i=_denominator/n;
            int j=_numerator/n;
            if(i!=1){
                NSLog(@"分数是%d/%d",j,i);}
            else
            {
                NSLog(@"分数是%d",j);
            }
        }
    }
}
-(void)add:(Fraction *)f{
    int i=f->_denominator*_denominator;//通分分母
     int j=_numerator*f->_denominator;
    int k=f->_numerator*_denominator;
    j =j+k;
    Fraction *f4=[Fraction new];//[f setDenominator:i]
    [f4 setDenominator:i];//[f setNumerator:j];
    [f4 setNumerator:j];//[f print]
    [f4 print];

}
-(void)sub:(Fraction*)f{
   
    int i=f->_denominator*_denominator;//通分分母
    int j=_numerator*f->_denominator;
    int k=f->_numerator*_denominator;
    j =j-k;
    Fraction *f4=[Fraction new];
    [f4 setDenominator:i];
    [f4 setNumerator:j];
    [f4 print];
}

@end


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Fraction *f2=[Fraction new];
        [f2 setNumerator:112];
        [f2 setDenominator:77];
        [f2 print];
        Fraction *f1=[Fraction new];
        [f1 setNumerator:3];
        [f1 setDenominator:11];
        [f2 add:f1];
        [f2 sub:f1];

    }
    return 0;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马