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
网友评论