【创建一个名为Rational的类,进行分数运算.编写一个程-查字典问答网
分类选择

来自雷双喜的问题

  【创建一个名为Rational的类,进行分数运算.编写一个程序测试该类.要求使用C#语言用整数变量表示类的private数据--numeraror(分子)和denominator(分母).提供一个构造函数,它使这个类的对象在声】

  创建一个名为Rational的类,进行分数运算.编写一个程序测试该类.要求使用C#语言

  用整数变量表示类的private数据--numeraror(分子)和denominator(分母).提供一个构造函数,它使这个类的对象在声明时得以初始化.这个构造函数应该包含默认值,以防未提供初始化值的情况,并且它应该以简化的形式保存分数,例如2/4应在对象中保存numeraror为1、denominator为2的形式.对下列任务,提供完成它们的public成员函数:

  (1)两个Rational值相加,结果应以简化的形式保存.

  (2)两个Rational值相减,结果应以简化的形式保存.

  (3)两个Rational值相乘,结果应以简化的形式保存.

  (4)两个Rational值相除,结果应以简化的形式保存.

  (5)以a/b的形式打印Rational值,其中a为分子,b为分母.

  (6)以浮点数形式打印Rational值.

1回答
2020-04-08 08:01
我要回答
请先登录
陈东奎

  publicclassRational{

  publicRational():this(0,0){}

  publicRational(intnumeraror,intdenominator){

  if(numeraror==0||denominator==0){

  this.numeraror=0;

  this.denominator=0;

  }else{

  intn=numeraror;

  intd=denominator;

  if(numeraror>denominator)n=d+(d=n)*0;

  intt=d/n;

  if(t!=numeraror&&t!=denominator){

  denominator=denominator/t;

  numeraror=numeraror/t;

  }

  this.numeraror=numeraror;

  this.denominator=denominator;

  }

  }

  privatereadonlyintnumeraror;

  privatereadonlyintdenominator;

  publicintNumeraror{

  get{returnnumeraror;}

  }

  publicintDenominator{

  get{returndenominator;}

  }

  publicoverrideboolEquals(objectobj){

  returnobjisRational?(objasRational).denominator==denominator&&(objasRational).numeraror==numeraror:false;

  }

  publicoverrideintGetHashCode(){

  return((int)denominator^(int)(denominator>>32))^((int)numeraror^(int)(numeraror>>32));

  }

  publicoverridestringToString(){

  returndenominator==0?"NaN":string.Format("{0}/{1}",numeraror,denominator);

  }

  publicstringToFloatString(){

  returndenominator==0?"NaN":string.Format("{0:f5}",((float)numeraror)/denominator);

  }

  publicRationalAdd(Rationalr){

  returnnewRational(this.Numeraror+r.Numeraror,this.Denominator+r.Denominator);

  }

  publicRationalSubtract(Rationalr){

  returnnewRational(this.Numeraror-r.Numeraror,this.Denominator-r.Denominator);

  }

  publicRationalMultiply(Rationalr){

  returnnewRational(this.Numeraror*r.Numeraror,this.Denominator*r.Denominator);

  }

  publicRationalDivide(Rationalr){

  returnnewRational(r.Numeraror==0?0:this.Numeraror/r.Numeraror,r.Denominator==0?0:this.Denominator/r.Denominator);

  }

  publicstaticRationaloperator+(Rationalr1,Rationalr2){

  returnr1.Add(r2);

  }

  publicstaticRationaloperator-(Rationalr1,Rationalr2){

  returnr1.Subtract(r2);

  }

  publicstaticRationaloperator*(Rationalr1,Rationalr2){

  returnr1.Multiply(r2);

  }

  publicstaticRationaloperator/(Rationalr1,Rationalr2){

  returnr1.Divide(r2);

  }

  publicstaticbooloperator==(Rationalr1,Rationalr2){

  returnr1.Equals(r2);

  }

  publicstaticbooloperator!=(Rationalr1,Rationalr2){

  return!r1.Equals(r2);

  }

  publicstaticbooloperator>(Rationalr1,Rationalr2){

  return((float)r1.Numeraror)/r1.Denominator>((float)r2.Numeraror)/r2.Denominator;

  }

  publicstaticbooloperator=(Rationalr1,Rationalr2){

  return((float)r1.Numeraror)/r1.Denominator>=((float)r2.Numeraror)/r2.Denominator;

  }

  publicstaticbooloperator

2020-04-08 08:04:23

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •