• 结对编程练习_四则运算(第二周)


    设计思路

    1.真分数加法/减法:和/差的分母=两个操作数的分母之积,和/差的分子=第一个操作数的分子乘以第二个操作数的分母+/-第二个操作数的分子乘以第一个操作数的分母。

    2.真分数乘法:积的分母=两个操作数之积,积的分子=两个操作数之积。

    3.真分数除法:先取除数的倒数,转换成真分数乘法。

    4.真分数约分:分子、分母同时除以最大公约数。

    代码及注释

    加法:

        {
            int commonDenominator = denominator * op2.getDenominator();//和的分母等于分母之积
            int numerator1 = numerator * op2.getDenominator();//第一个数的分子乘以第二个数的分母
            int numerator2 = op2.getNumerator() * denominator;//第二个数的分子乘以第一个数的分母
            int sum = numerator1 + numerator2;//sum和的分子
            System.out.print("(" + this.toString() + ")" + " + " + "(" + op2.toString() + ")" + "=");
            return new fenshu(sum, commonDenominator);//sum分子,commonDenominator分母
        }```
    
    减法:
    ```public fenshu subtract(fenshu op2)//减法,例如2/3-1/2=(2*2-1*3)/(2*3)
        {
            int commonDenominator = denominator * op2.getDenominator();//差的分母
            int numerator1 = numerator * op2.getDenominator();
            int numerator2 = op2.getNumerator() * denominator;
            int difference = numerator1 - numerator2;//difference差的分子
            System.out.print("(" + this.toString() + ")" + " - " + "(" + op2.toString() + ")" + "=");
            return new fenshu(difference, commonDenominator);//difference分子,commonDenominator分母
        }```
    
    乘法:
    ```public fenshu multiply(fenshu op2)//乘法,例如(2/3)*(1/2)=(2*1)/(3*2)
    {
     int denom = denominator * op2.getDenominator();//积的分母
    int numer = numerator * op2.getNumerator();//积的分子
    System.out.print("(" + this.toString() + ")" + " * " + "(" + op2.toString() + ")" + "=");
    return new fenshu(numer, denom);//numer分子,denom分母
    }```
    
    除法:
    ```public fenshu divide(fenshu op2)//除法,例如(2/3)/(1/2)=(2*2)/(3*1)
        {
            fenshu op1 = op2.reciprocal();//除数取倒数,转变为乘法
            int numer = numerator * op1.getNumerator();
            int denom = denominator * op1.getDenominator();
            System.out.print("(" + this.toString() + ")" + " / " + "(" + op2.toString() + ")" + "=");
            return new fenshu(numer, denom);
        }```
    
    约分:
    ```private void reduce() {
            if (numerator != 0) {
                int common = gcd(Math.abs(numerator), denominator);//求分子分母的最大公约数
                numerator = numerator / common;
                denominator = denominator / common;//约分
            }
        }```
    
    运行过程截图
    ==========
    ![](https://images2018.cnblogs.com/blog/1284381/201804/1284381-20180423212622614-785010597.jpg)
    
    UML图:
    ==========
    ![](https://images2018.cnblogs.com/blog/1284381/201804/1284381-20180423212649925-587309424.jpg)
    
    
    实验体会
    ==========
    实验为自己一人完成,受到了很多同学的帮助,学到了很多新的知识,使得对于四则运算的了解掌握加深一步。
  • 相关阅读:
    Oracle数据库中truncate命令和delete命令的区别
    数组中只出现一次的数字
    数对之差的最大值
    SQL Server: Difference Between Locking, Blocking and Dead Locking
    字符串处理
    Phpcms_V9任意文件上传
    最初的梦想
    陪你走过漫长岁月
    基于MitM的RDP降级攻击
    CVE-2017-0358
  • 原文地址:https://www.cnblogs.com/zl1998827/p/8921872.html
Copyright © 2020-2023  润新知