zoukankan      html  css  js  c++  java
  • 结对编程练习_四则运算(第二周)

    设计思路

    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)
    
    
    实验体会
    ==========
    实验为自己一人完成,受到了很多同学的帮助,学到了很多新的知识,使得对于四则运算的了解掌握加深一步。
  • 相关阅读:
    C#使用表达式树实现对象复制
    用vbs将字符串复制到剪贴板
    C# 动态获取程序集信息
    关于ftp的主动模式(Active Mode)和被动模式(Passive Mode)
    %userprofile%\Local Settings文件夹拒绝访问怎么办
    在Winform框架的多文档界面中实现双击子窗口单独弹出或拖出及拽回的处理
    ABP VNext框架基础知识介绍(1)框架基础类继承关系
    ABP开发框架中分页查询排序的实现处理
    Vue&Element开发框架中增加工作流处理,工作流的各个管理页面的界面处理
    基于ABP开发框架的技术点分析和项目快速开发实现
  • 原文地址:https://www.cnblogs.com/zl1998827/p/8921872.html
Copyright © 2011-2022 走看看