我们需要储存多个分数,这样就需要我们应用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;
} |
|