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;//约分
        }
    }

运行过程截图

1296616-20180422232223289-1219763507.png

代码托管地址

码云链接

UML图:

1296616-20180422233520708-1641017350.png

遇到的困难及解决方法

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

对结对小伙伴做出评价

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

PSP

PSP2.1Personal Software Process Stages预估耗时(小时)实际耗时(小时)
Planning计划0.50.5
Estimate估计这个任务需要多少时间10.511.5
Analysis需求分析 (包括学习新技术)1.00.5
Design Spec生成设计文档1.01.5
Design Review设计复审 (和同事审核设计文档)0.50.5
Coding Standard代码规范 (为目前的开发制定合适的规范)1.01.0
Design具体设计1.01.5
Coding具体编码1.02.0
Code Review代码复审0.50.5
Test测试(自我测试,修改代码,提交修改)11
Reporting报告1.01.0
Test Report测试报告0.50.5
Size Measurement计算工作量0.50.5
Postmortem & Process Improvement Plan事后总结, 并提出过程改进计划1.00.5

转载于:https://www.cnblogs.com/5306xyh/p/8910839.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值