(1)说实话我这部分真的不知道写些什么,因为我只有第三次作业写了两个类,前两次都是一个类,一个类的好处可能也就是写起来比较方便(不用抽象什么共性了,直接c语言莽过去),缺点很多,架构不清晰,可读性不高,可扩展性不强,还学不到什么东西。因此在这里立一个flag,下次作业必好好构造。由于都是一个类,UML就不上丢人现眼了。

(2)第二次作业的bug点在于我的优化,我对我的表达式的优化方法是求导后在String类中将^1,1*,0等替换掉,0是好办的,但是^1,和1*有些麻烦,我一开始想用String自带的replaceall方法,但是发现这样会把类似于x^122改成x22,发现这一点后我便在求导的过程中将所有的1(就真的是1),改为1q,这样我再在后面把所有的1q替换掉就好了,但是我只把1q*和^1q替换掉了,像+1这样的数据就会输出+1q,这就是bug点所在,所以我在修复bug时把这一部分替换成+(-)1就完成了;第二个bug是我当时误以为制表符等于四个空格,于是没有对制表符进行处理导致出现制表符代码会崩溃,于是在一开始的判断时加入了制表符,合法的话就把他替换掉,成功修复了所有bug。第三次作业的bud点发生在求导的时候,由于表达式很长,我是先用+-号分开各个表达式,然后在每一个表达式里再用*号分开,但是这样有一个问题就是像x*+2求导应该是1,但是由于+号分开,导致求导是1甚至崩溃,所以在改进的时候我在+-号分开后去判断是不是*后面的+-或者^后面的加减,修复了这个bug;还有一个bug是我在求导时如果一个表达式是一堆const连乘,我输出的时候会多一个加号,于是我在求导部分特判了这种情况,修复了所有的bug。

(3)来说一下我互测hack别人时的策略吧。由于转专业的情况,第一次作业没有参加互测,所以在第二次互测时,我还真的认真看了别人的代码,先从她的正则开始看,然后就是求导部分对指数系数的求导是否正确,再去试一下数据,这也导致我在第二次的时候hack效率低下;到了第三次,我跟大佬们学习了对拍技术,直接上对拍器,但是不是盲目对拍,拍出的数据我先分析她的问题出在哪里,去除一些同质的bug,再将麻烦的数据简化,提交上去,使得我尽管在A组还是有四次hack入账。还是希望大家在对拍出bug后不要太激动,先看一看,同质的bughack一两次差不多了,你hack太多也没什么意义,人家一次更改就过了,而且还让被hack的人心烦,何必呢?

(4)三次作业我最多用了两个类,说实话还没有掌握面向对象的思想和方法,大多数代码还是在用面向过程(c语言打法)来写,自己也感觉这样会有些问题,于是在前两天学了继承接口等等概念,至于重构什么的我打算在第五次作业开始时好好构思,把面向对象的思想用好,写出像java的代码,真正的学到知识。

第一次oo博客作业--表达式求导的更多相关文章

  1. BUAA_OO第一单元总结性博客作业——表达式求导

    一.程序设计思路 在我的三次作业中都采用了类的分层结构,采用逐项匹配,分层求导的思路. (一). 第一次作业中构建了Polynimial(多项式)类,在类的构造器中就完成了对非法空格的判断并对合法表达 ...

  2. 2019年北航OO第1单元(表达式求导)总结

    2019年北航OO第1单元(表达式求导)总结 1 基于度量的程序结构分析 量化指标及分析 以下是三次作业的量化指标统计: 关于图中指标在这里简要介绍一下: ev(G):基本复杂度,用来衡量程序非结构化 ...

  3. 2020 OO 第一单元总结 表达式求导

    title: BUAA-OO 第一单元总结 date: 2020-03-19 20:53:41 tags: OO categories: 学习 OO第一单元通过三次递进式的作业让我们实现表达式求导,在 ...

  4. 2019年北航OO第一单元(表达式求导任务)总结

    2019面向对象课设第一单元总结 一.三次作业总结 1. 第一次作业 1.1 需求分析 第一次作业的需求是完成简单多项式导函数的求解,表达式中每一项均为简单的常数乘以幂函数形式,优化目标为最短输出.为 ...

  5. OO博客作业-《JML之卷》

    OO第三单元小结 一.JML语言理论基础以及应用工具链情况梳理 一句话来说,JML就是用于对JAVA程序设计逻辑的预先约定的一种语言,以便正确严格高效地完成程序以及展开测试,这在不能容忍细微错误的工程 ...

  6. OO第一单元总结——表达式求导

    第一次作业 (1) UML结构图 (2)结构分析 Polynomial 类是对输入的字符串进行预处理,其中包括判断格式是否合法,运算符简化,分割成项等方法. Polynomial处理后得到的每一个项的 ...

  7. 2019 OO第一单元总结(表达式求导)

    一. 基于度量的程序结构分析 1. 第一次作业 这次作业是我上手的第一个java程序,使用了4个类来实现功能.多项式采用两个arraylist来存,系数和幂指数一一对应. private ArrayL ...

  8. OO第一单元作业——魔幻求导

    简介 本单元作业分为三次 第一次作业:需要完成的任务为简单多项式导函数的求解. 第二次作业:需要完成的任务为包含简单幂函数和简单正余弦函数的导函数的求解. 第三次作业:需要完成的任务为包含简单幂函数和 ...

  9. 第二次oo博客作业--多线程电梯

    这次的系列作业是写一个电梯调度,主要目的是让我们熟悉多线程. 第一次作业是一个傻瓜电梯的调度问题,要求也很简单,即每次接一个人就行了.我只用了两个线程,一个是输入线程,一个是电梯线程,输入线程负责从标 ...

随机推荐

  1. C++ 重定义、重载、覆盖

    想要用好C++继承和类自身函数实现就必须了解C++得三个概念重定义(redefine).重载(overload).重写(override). 一 基本感念 1 重定义(redefine) 派生类对基类 ...

  2. (转)Android之发送短信的两种方式

    https://www.cnblogs.com/dongweiq/p/4866022.html if(TextUtils.isEmpty(number)||TextUtils.isEmpty(cont ...

  3. E3Upload项目总结

    项目需求:读取阿里云数据库数据,通过webservice接口上传给第三方. 概要设计,项目满足以下几点: 1.动态接口调用 2.给多平台上传 3.数据保持(减轻数据库压力) 4.上传任务管理 5.扩展 ...

  4. [UE4]Skeletal Mesh的碰撞体

    一.骨骼模型和骨骼碰撞体肯定不是完全吻合的,因为骨骼模型太复杂了. 二.骨骼碰撞体编辑在Physics Asset资源中 三.Constraints:只显示碰撞体 四.对于射击游戏来说,这样的碰撞体完 ...

  5. 填坑:Java 中的日期转换

    我们之前讨论过时间,在Java 中有一些方法会出现横线?比如Date 过期方法. 参考文章:知识点:java一些方法会有横线?以Date 过期方法为例 Java中的日期和时间处理方法 Date类(官方 ...

  6. Neject 在MVC框架中使用

    Neject 开始是用3.3.0.0,不能自动生成NinjectWebCommon文件,测试了很久发现,是版本的问题 ,后来用Nuget卸载后,重新下了Ninject,Ninject.Web.Comm ...

  7. Highcharts绘制曲线图小结

    Higcharts绘制曲线图很好用! 虽然说Highcharts官网有API 刚接触这个领域,学有心得,理解不到位之处希望大家多多指教! 项目绘制的曲线是:平均水位随时间的变化而改变的水情走势图. 主 ...

  8. js obj对象转formdata格式代码

    import isArray from "lodash/isArray" export function objToFormData(config) { //对象转formdata ...

  9. WPF常用TriggerAction用法 (一)

    Microsoft.Expression.Interactivity 常用TriggerAction-> CallMethodAction ChangePropertyAction Contro ...

  10. Python数据类型的内置函数之str(字符串)

    Python数据类型内置函数 - str(字符串) - list(列表) - tuple(元组) - dict(字典) - set(收集) str(字符串)的一些操作 - 字符串相连方法 # 字符串的 ...