2022-05-18 Dart 分数相加、相乘

Dart 分数相加、相乘

class MyFraction{

  int num1 = 1;
  int num2 = 1 ;

  MyFraction(this.num1,this.num2);

  MyFraction operator + (MyFraction o){
     var f = new MyFraction(num1, num2);
     f.num1 = f.num1 * o.num2 + o.num1 * f.num2;
     f.num2 = o.num2 * f.num2;
     return f;
  }

  MyFraction operator * (MyFraction o){
    var f = new MyFraction(num1, num2);
    f.num1 = f.num1 * o.num1 ;
    f.num2 = o.num2 * f.num2;
    return f;
  }

  void count(){
    if(num1 > num2){
      int a = gcd(num2, num1);
      num1 = (num1 ~/ a);
      num2 = (num2 ~/ a);
    } else {
      int a = gcd(num1, num2);
      num1 = (num1 ~/ a);
      num2 = (num2 ~/ a);
    }


  }

  void printMy(){
    if(num1 == num2){
      print("${num1}");
    } else {
      print("${num1}/${num2}");
    }

  }

  int gcd(int a,int b) {
    int min = a < b ? a : b;
    for (int i = min; i >= 1; i--) {
      if (a % i == 0 && b % i == 0)
        return I;
    }
    return 0;
  }


}

void main(){

  var f1 = MyFraction(1,2);

  var f2 = MyFraction(2,1);
  var f3 = f1 + f2;
  var f4 = f1 * f2;
  f3.printMy();
  f4.printMy();
  f3.count();
  f4.count();
  f1.printMy();
  f2.printMy();
  f3.printMy();
  f4.printMy();


}
1C2B9E4F-C97A-478B-A550-12BC0E530237_4_5005_c.jpeg
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容