第一次oo博客作业--表达式求导
(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博客作业--表达式求导的更多相关文章
- BUAA_OO第一单元总结性博客作业——表达式求导
一.程序设计思路 在我的三次作业中都采用了类的分层结构,采用逐项匹配,分层求导的思路. (一). 第一次作业中构建了Polynimial(多项式)类,在类的构造器中就完成了对非法空格的判断并对合法表达 ...
- 2019年北航OO第1单元(表达式求导)总结
2019年北航OO第1单元(表达式求导)总结 1 基于度量的程序结构分析 量化指标及分析 以下是三次作业的量化指标统计: 关于图中指标在这里简要介绍一下: ev(G):基本复杂度,用来衡量程序非结构化 ...
- 2020 OO 第一单元总结 表达式求导
title: BUAA-OO 第一单元总结 date: 2020-03-19 20:53:41 tags: OO categories: 学习 OO第一单元通过三次递进式的作业让我们实现表达式求导,在 ...
- 2019年北航OO第一单元(表达式求导任务)总结
2019面向对象课设第一单元总结 一.三次作业总结 1. 第一次作业 1.1 需求分析 第一次作业的需求是完成简单多项式导函数的求解,表达式中每一项均为简单的常数乘以幂函数形式,优化目标为最短输出.为 ...
- OO博客作业-《JML之卷》
OO第三单元小结 一.JML语言理论基础以及应用工具链情况梳理 一句话来说,JML就是用于对JAVA程序设计逻辑的预先约定的一种语言,以便正确严格高效地完成程序以及展开测试,这在不能容忍细微错误的工程 ...
- OO第一单元总结——表达式求导
第一次作业 (1) UML结构图 (2)结构分析 Polynomial 类是对输入的字符串进行预处理,其中包括判断格式是否合法,运算符简化,分割成项等方法. Polynomial处理后得到的每一个项的 ...
- 2019 OO第一单元总结(表达式求导)
一. 基于度量的程序结构分析 1. 第一次作业 这次作业是我上手的第一个java程序,使用了4个类来实现功能.多项式采用两个arraylist来存,系数和幂指数一一对应. private ArrayL ...
- OO第一单元作业——魔幻求导
简介 本单元作业分为三次 第一次作业:需要完成的任务为简单多项式导函数的求解. 第二次作业:需要完成的任务为包含简单幂函数和简单正余弦函数的导函数的求解. 第三次作业:需要完成的任务为包含简单幂函数和 ...
- 第二次oo博客作业--多线程电梯
这次的系列作业是写一个电梯调度,主要目的是让我们熟悉多线程. 第一次作业是一个傻瓜电梯的调度问题,要求也很简单,即每次接一个人就行了.我只用了两个线程,一个是输入线程,一个是电梯线程,输入线程负责从标 ...
随机推荐
- 聊聊Google DSM产品的发布
只有产品顺利的发布给用户使用并获得良好反馈,整个团队的价值才有所体现. 引言 不知不觉,从13年接手Google Doubleclick Sales Manager到今年7月,4年经历了3个miles ...
- Python【每日一问】15
问:简述with方法打开处理文件实际上做了哪些工作 答: filename= "test.txt" with open(filename, "w", encod ...
- English 翻译到Vyeshal的软件
我或许可以做一个从英语到Vyeshal的翻译软件2333
- tomcat和iis共用80端口的简明手册
对于使用tomcat-connector实现iis与tomcat实现80端口共用的问题,网上的信息异常混乱,很多地方误人子弟,浪费时间.本文给出简明手册式的做法: 首先列出我们需要做的事项: 1. ...
- php 操作mysql
//由于前期数据库字段设计问题,没太注意,字段内容,后台python采集数据直接插入,没做处理,数据又不想丢掉,只能对网站数据库字段内容进行处理,100万条数据,调试了半天,很多思路都试过,各种坑,弄 ...
- 分析RedisRDB和AOF两种持久化机制的工作原理及优劣势
一.RDB和AOF两种持久化机制的介绍 RDB持久化机制,对redis中的数据执行周期性的持久化 AOF机制对每条写入命令作为日志,以append-only(追加)的模式写入一个日志文件中,在redi ...
- Mock及Mockito使用
mockito http://www.vogella.com/tutorials/Mockito/article.html 原文地址: http://www.open-open.com/lib/vie ...
- tp5邮件发送
一.开启SMTP服务(使用php发送邮件需要用到SMTP服务,这里以163邮箱的SMTP服务为例) 1.登录163邮箱,在首页上找到“设置”. 2.选择开启的服务,一般都全选,POP3/SMTP/IM ...
- when to use reinterpret_cast
写的太好了.. When you convert for example int(12) to unsigned float (12.0f) your processor needs to invok ...
- C 语言 计算
note1: 不要把表达式写的太复杂,不容易阅读和理解,容易造成读程序的误解,所以要避免写出复杂的表达式. note2:程序是按步执行的,程序表达的是顺序执行的动作,而不是关系.