设计一个有理数类,应该包含加,减,乘,除运算。

有理数类:

public class Rational {
    public int i;
    public int j;
    public Rational(){
    i=1;
    j=1;
    };
    public Rational(int I,int J)
    {
        i=I;
        j=J;
        
    }
    public void setRational(int I,int J)
    {
                i=I;
                j=J;
                        
    }
    public double getI(){return i;}
    public double getJ(){return j;}
    public Rational sum(Rational b){
    Rational su=new Rational();
    su.setRational((int)(i*b.getJ()+j*b.getI()),(int)(b.getJ()*j));
    return su;
    }
    public Rational subtraction(Rational b){
    Rational sub=new Rational();
    sub.setRational((int)(i*b.getJ()-j*b.getI()),(int)(j*b.getJ()));
    return sub;
    
    }
    public Rational multiplication(Rational b){
    Rational mul=new Rational();
    mul.setRational((int)(i*b.getI()),(int)(j*b.getJ()));
    return mul;
    }
    public Rational division(Rational b){
        Rational div=new Rational();
        div.setRational((int)(i*b.getJ()),(int)(j*getI()));
        return div;
    }
    public String toString()
    {
       return i+"/"+j;
    }
}

有理数类的测试:

import java.util.Scanner;
public class RationalTest {
    public static void main(String[]args)
    {
        Scanner in=new Scanner(System.in);
        System.out.println("please enter two  number");
        Rational a=new Rational(in.nextInt(),in.nextInt());
        System.out.println("please enter two number");
        Rational b=new Rational(in.nextInt(),in.nextInt());
        System.out.println("Rational a:"+a);
        System.out.println("Rational b:"+b);
      
        System.out.println("a+b:"+ a.sum(b).toString());
        
        System.out.println("a-b:"+a.subtraction(b).toString());
        
        System.out.println("a*b:"+a.multiplication(b).toString());
        
        System.out.println("a/b:"+a.division(b).toString());
        
    }
    
}

好的,我可以回答这个问题。有理数可以用分子和分母表示,我们可以设计一个结构体来表示有理数,其中分子和分母都是整数型。有理数、乘、除等操作可以通过分别对分子和分母进行运算来实现。具体实现可以参考以下代码: ``` #include <stdio.h> typedef struct { int numerator; // 分子 int denominator; // 分母 } Rational; // 求最大公约数 int gcd(int a, int b) { return b == ? a : gcd(b, a % b); } // 化简有理数 void simplify(Rational *r) { int g = gcd(r->numerator, r->denominator); r->numerator /= g; r->denominator /= g; } // 有理数Rational add(Rational r1, Rational r2) { Rational result; result.numerator = r1.numerator * r2.denominator + r2.numerator * r1.denominator; result.denominator = r1.denominator * r2.denominator; simplify(&result); return result; } // 有理数Rational subtract(Rational r1, Rational r2) { Rational result; result.numerator = r1.numerator * r2.denominator - r2.numerator * r1.denominator; result.denominator = r1.denominator * r2.denominator; simplify(&result); return result; } // 有理数乘法 Rational multiply(Rational r1, Rational r2) { Rational result; result.numerator = r1.numerator * r2.numerator; result.denominator = r1.denominator * r2.denominator; simplify(&result); return result; } // 有理数除法 Rational divide(Rational r1, Rational r2) { Rational result; result.numerator = r1.numerator * r2.denominator; result.denominator = r1.denominator * r2.numerator; simplify(&result); return result; } // 输出有理数 void printRational(Rational r) { printf("%d/%d\n", r.numerator, r.denominator); } int main() { Rational r1 = {1, 2}; Rational r2 = {3, 4}; Rational r3 = add(r1, r2); Rational r4 = subtract(r1, r2); Rational r5 = multiply(r1, r2); Rational r6 = divide(r1, r2); printRational(r3); printRational(r4); printRational(r5); printRational(r6); return ; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值