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

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

    参考资料及学习笔记

    结对编程练习_四则运算

    数据结构应用

    需求分析

    • 真分数(题目生成/题目运算判题)

    设计思路

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

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

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

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

    代码及注释

    • 加法:
     public fenshu add(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 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;//约分
            }
        }
    
    

    运行过程截图

    代码托管地址

    码云链接

    UML图:

    遇到的困难及解决方法

    遇到最大的困难就是怎么把这么多变量和方法结合起来,我们采用画图的方法,先把握整体框架,再逐一解决零散的小问题,最后再整合到一起。

    对结对小伙伴做出评价

    我有一个毛病就是总喜欢把事情想得很复杂,当自己的能力达不到期待的程度时,就会产生畏难和逆反情绪。感谢小伙伴一直以来的鼓励,感谢你的冷静,感谢你的奇思妙想,一起加油!

    PSP

    PSP2.1 Personal Software Process Stages 预估耗时(小时) 实际耗时(小时)
    Planning 计划 0.5 0.5
    Estimate 估计这个任务需要多少时间 10.5 11.5
    Analysis 需求分析 (包括学习新技术) 1.0 0.5
    Design Spec 生成设计文档 1.0 1.5
    Design Review 设计复审 (和同事审核设计文档) 0.5 0.5
    Coding Standard 代码规范 (为目前的开发制定合适的规范) 1.0 1.0
    Design 具体设计 1.0 1.5
    Coding 具体编码 1.0 2.0
    Code Review 代码复审 0.5 0.5
    Test 测试(自我测试,修改代码,提交修改) 1 1
    Reporting 报告 1.0 1.0
    Test Report 测试报告 0.5 0.5
    Size Measurement 计算工作量 0.5 0.5
    Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 1.0 0.5
  • 相关阅读:
    Asp.Net Mvc Filter
    使用 EntityFramework后把一个对象序列化成json字符串引起循环引用的问题
    RCTF2020 calc & EasyBlog & swoole
    GKCTF-EzWeb+redis未授权访问
    BJD3rd
    http走私
    网鼎杯2020青龙组 web writeup
    De1CTF 2020 部分web
    js相关trick总结
    xss常见编码解析
  • 原文地址:https://www.cnblogs.com/5306xyh/p/8910839.html
Copyright © 2011-2022 走看看