outside_的第三次博客作业

news/2024/7/4 6:45:53/文章来源:https://www.cnblogs.com/w11w/p/18276410

outside_的第三次博客作业

--Wenxiaowenyy

前言:

这次博客是本学期的最后一次博客,也是大一的最后篇博客,回顾这学期学习java的热情以及完成大作业的积极性比起学c语言的时候减少了许多,原因有很多,其一是自己变懒惰了,其二是这学期的java比起上学期的c语言的确难度增加了许多,不过世上没有后悔药吃,感觉都是自己作的,希望暑期的实训和下学期能够更加勤奋,更加努力,不要荒废自己,不要天天待在寝室里。好了,接下来就是对这学期最后两次大作业进行分析啦!

内容包含:
1.总结PTA大作业前三次题目集的知识点,题量,难度等
2.对题目提交的源码进行分析
3.仔细回忆自己做题时所踩的坑,总结反思,避免下次再犯
4.改进建议
5.个人总结、个人反思

题目集7

题目集7是上次博客中提到的题目集6的迭代,相比上次题目集6,这次增加了互斥开关,以及另一个电器窗帘,此次的窗帘与电灯的亮度有关联,所以输出数据的判定会与之前的用电器不同,类之间的联系也会更加紧密,难度较难,因为对于互斥开关的处理是个棘手的问题。考察的知识点有正则表达式,字符串一系列的处理操作、电器的继承、父类方法的重写以及正则表达式对输入的处理,正则表达式一如既往的还是所考察的知识点。

该题的难点有三个,其一是对于电阻的计算,因为加入互斥开关的话,要考虑总电阻的变化和哪个线路是通路,再进行计算电阻。其二是对于互斥开关的开关接在哪里的问题,它有两个接口,要如何判定互斥开关接在哪个接口上是个重要的问题。其三是灯的亮度与窗帘的开合百分比的处理,要根据灯泡的总亮度来控制窗帘开合百分比。

下面是本次迭代增加的窗帘和互斥开关的部分代码:

窗帘类:

点击查看代码
class Curtain extends Device {private double rate=100;public Curtain(String type,String num,int p1,int p2,int R){super(type,num,p1,p2,R);}public void setV(int v1,int v2){super.setV(v1,v2);}public double getRate(double bright){if(super.getR()*super.getI()<50)this.rate=100;else{if(bright<50)this.rate=100;else if(bright>=50&&bright<100)this.rate=80;else if(bright>=100&&bright<200)this.rate=60;else if(bright>=200&&bright<300)this.rate=40;else if(bright>=300&&bright<400)this.rate=20;elsethis.rate=0;}return this.rate;}public void show(double bright){if(super.getR()*super.getI()<50)this.rate=100;else{if(bright<50)this.rate=100;else if(bright>=50&&bright<100)this.rate=80;else if(bright>=100&&bright<200)this.rate=60;else if(bright>=200&&bright<300)this.rate=40;else if(bright>=300&&bright<400)this.rate=20;elsethis.rate=0;}System.out.println(String.format("@S%s:%.0f%%",super.getNum(),this.rate));}}

互斥开关:

点击查看代码
class Mutex extends Device {private int state = 1;Mutex(String type,String num,int p1,int p2,int R) {super(type, num, p1, p2, R);}public void setV(int v1,int v2){super.setV(v1,v2);}@Overridepublic void change(double a){if(this.state==1)this.state=0;elsethis.state=1;}public int getState(){return this.state;}@Overridepublic void show(double I){if(this.state==1)System.out.println("@H"+super.getNum()+":closed");
//        else
//            System.out.println("@H"+super.getNum()+":turned on");}public double getR(){return super.getR();}public void changeR(double R){super.changeR(R);}}

圈复杂度:

类图:

该题我遇到的问题:

1.互斥开关的处理 解决方案:将互斥开关拆分成为两个单独的开关处理
2.窗帘闭合度的计算 解决方案:多次测试,找出出错原因

题目集8:

题目集8是电器迭代的最后一次了,这次增加了二极管以及短路情况,还有就是输出也改了,需要使用到引脚了,前几次我都没使用到引脚,这次输出就得输出各个引脚的电压,同时也增加了电路复杂程度,难度的话可以说算是最难的一次了,毕竟是最后一次了,并且我也只拿了一点点分😂。考察的知识点有正则表达式,字符串一系列的处理操作、电器的继承、父类方法的重写以及正则表达式对输入的处理。

该题的难点有很多,一是对于新加入的电路元件二极管,如何对其导度进行判断,二是电流的计算,如何计算整体电流来判断电流是否使用电器发热过高,三是各个引脚的电压,对于各个引脚的电压计算也是一个难点,要判断这是属于用电器的哪个引脚,还要计算电压,四是对于电路情况的分析,此次的电路情况十分复杂,所以对于各个电路的处理至关重要,影响到电压和电流。

下面是新增用电器二极管的代码:

点击查看代码
public class Diode {private String name; // 二极管的名称private boolean isForward; // 是否正向接入private double voltage; // 二极管的电压private final double MAX_CURRENT = 8; // 二极管的最大电流public Diode(String name) {this.name = name;this.isForward = false; // 默认为反向接入this.voltage = 0; // 默认电压为0V}// 设置二极管为正向接入public void setForward() {this.isForward = true;}// 设置二极管为反向接入public void setReverse() {this.isForward = false;}// 设置二极管的电压public void setVoltage(double voltage) {this.voltage = voltage;}// 获取二极管的电压public double getVoltage() {return this.voltage;}// 计算二极管的电流public double getCurrent() {if (isForward) {// 正向接入时,电阻为0,电流由外部电路决定return voltage / 0; // 实际上这里会得到无穷大的电流,需要外部电路限制} else {// 反向接入时,视为断路,电流为0return 0;}}// 检查电流是否超过最大限制private boolean isCurrentLimited() {double current = getCurrent();return current > MAX_CURRENT;}// 输出二极管的模拟结果public String getOutput() {if (isForward) {return "@" + name + ":conduction " + voltage + "-0";} else {return "@" + name + ":cutoff " + voltage + "-0";}}// 模拟二极管的工作,返回输出结果和是否超过电流限制public String simulate() {String output = getOutput();if (isCurrentLimited()) {output += " exceeding current limit error";}return output;}
}

圈复杂度:

该题我遇到的问题:
1.二极管的处理 解决方案:仔细审题,分析二极管
2.电流的计算 解决方案:多次根据测试样例,看计算的电流是否正确
3.引脚电压的计算 解决方案:优化各类中的引脚方法以及数据

个人总结与反思:

1.要加强类的设计以及类与类之间关系的设计
2.要培养自己的耐心
3.要培养自己根据题目意思来想测试用例的能力

最后,希望自己下个学期能够更加努力,同时也希望下个学期的难度稍微大一点,更能磨练自己。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/734195.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最大值减不为0的最小值

问题:一列中的最大值减去不为0的最小数(所有数据均为正数) 函数公式解决:=MAX(B4:B7)-MINIFS(B4:B7,B4:B7,">0")如果数据有正有负,则需要用MaxIfs减去MinIfs,MaxIfs与MinIfs用法相同。

搭建rust开发环境-记录

通过官网教程(https://www.rust-lang.org/zh-CN/learn/get-started)下载rustup安装 在项目开始的时候提示需要解析工具,按照提示需下载vsstudio,安装的时候选择c++开发桌面程序,不然后面build时候报错 参考文档:https://blog.csdn.net/weixin_44475303/article/details/1…

文本时间转成小数

问题:文本时间(**小时**分钟**秒)转成小数,小时部分为整数。 函数公式解决:传统套路 =SUBSTITUTE(SUBSTITUTE(A2,"小",),"钟",)*24 新套路 =SUBSTITUTES(A2,{"小","钟"},)*24 更新的套路(正则) =REGEXP(A2,"[小钟]",…

Face Adapter - 一键面部表情迁移、换脸工具 本地一键整合包下载

Face Adapter是一款高效的人脸编辑适配器,由浙江大学和腾讯联合开发,适用于预先训练的扩散模型,专门针对人脸再现和交换任务。只需要上传一张源脸和一张参考人脸,就能按照参考人脸的风格生成相同的面部的表情,一键生成两张换脸照片。类似的ID保持的人像生成软件,还有我们…

高级筛选超过15位的数字

问题:高级筛选直接设置条件,当条件的数字超过15位时会出现错误,要如何解决。 解决:在高级筛选条件中设置公式,公式所引用单元格为数据源表标题行下第一行,公式所在单元格上一个单元格必须空

OOP第三轮大作业总结

关于学习OOP的一点总结 本学期的pta也是走到尾声了,一路过来最深的体会是想做好面向对象真不是件容易的事情,但它确实在日常生活中发挥了很大的作用。个人很喜欢这种和实际结合起来的课程,但几个月下来我学得并不是很好,只能日后自己钻研了。 个人体会 关于语法: 1.因为一…

第三次大作业Blog

目录前言设计与分析踩坑心得改进建议总结 前言 知识点:类与对象的应用: 在三次大作业中,类与对象的应用无疑是核心和基础。这充分体现了Java作为一种面向对象编程语言的特性。通过定义类,我们可以创建具有特定属性和行为的对象,从而构建出复杂的程序逻辑。在每次大作业中,…

前端调用后端产生跨域问题解决

[参考文章](https://www.cnblogs.com/zhaodalei/p/17090119.html) ## 问题复现 * 前端的地址是* 后端的的请求资源地址 http://127.0.0.1:3000/api/category/list。 * 当前端请求获取后端数据时,会报如下错误,导致资源加载不出来。但是直接访问是可以获得数据的。说明不是数据…

java第三次大作业blog

pta第三次博客 目录 • pta第三次博客 o 1.前言 o 2.设计与分析 o 3.踩坑心得: o 4.改进建议 o 5.总结1.前言 这两次题目集的主要考察的知识点是继承和多态,包括对super、extend关键字的使用,方法的重写,类的继承,接口,排序,正则表达式等。 在数据处理方面,作业同样要求…

Python基础之多进程

目录1 多进程1.1 简介1.2 Linux下多进程1.3 multiprocessing1.4 Pool1.5 进程间通信1.6 分布式进程 1 多进程 1.1 简介 要让Python程序实现多进程(multiprocessing),我们先了解操作系统的相关知识。 Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用…

[LeetCode] 169. Majority Element

排序,返回中值。class Solution:def majorityElement(self, nums: List[int]) -> int:#always existsnums.sort()return nums[len(nums)//2]

BUUCTF---childRSA(费马引理)

题目点击查看代码 from random import choice from Crypto.Util.number import isPrime, sieve_base as primes from flag import flagdef getPrime(bits):while True:n = 2while n.bit_length() < bits:n *= choice(primes)if isPrime(n + 1):return n + 1e = 0x10001 m = …

Python 使用__slots__来限制实例动态添加属性

在Python中,是可以随便在对象实例中动态添加属性的。那么,怎么样可以防止其他人在调用类实例的时候胡乱添加属性和方法?使用 __slots__ 属性,来限制 class 实例能添加的属性也就是说,只有在 __slots__ 变量中的属性才能被动态添加,否则会添加失败。例如,创建一个 Person …

[python] Python日志记录库loguru使用指北

Loguru是一个功能强大且易于使用的开源Python日志记录库。它建立在Python标准库中的logging模块之上,并提供了更加简洁直观、功能丰富的接口。Logging模块的使用见:Python日志记录库logging总结。Loguru官方仓库见:loguru,loguru官方文档见: loguru-doc。 Loguru的主要特点…

Codeforces Round 955 (Div. 2, with prizes from NEAR!) codeforces div2 955

A. Soccer ------------------------题解--------------- 给你开始比分和结束比分问你中间两队比分有没有相等过有可能就是YES不可能就是NO 结束时两队比分肯定>=各自队伍开始时比分,我们只需要让开始时大的先到达结束比分,再让开始时落后的比分到达结束时比分,只需要在心…

PTA题目集7~8的总结

PTA题目集7~8的总结 一、前言 第七次题目集为家居强电电路模拟程序3。本题模拟的控制设备包括:开关、互斥开关、分档调速器、连续调速器。模拟的受控设备包括:灯、风扇、受控窗帘。两种设备都有两根引脚,通过两根引脚电压的电压差驱动设备工作。输入信息有设备信息、连接信息…

STM32F4驱动USB实现虚拟串口

实现目的 使用Dap-link和stlink的时候,就发现这些仿真器上并没有USB转TTL芯片,就可以实现USB转串口,实现虚拟串口,非常方便。这里实测得出,使用USB虚拟串口,可以轻松达到921600波特率,接近1M/s,因为这个虚拟串口实际就是USB通讯,使用USB通讯,模拟COM类通讯端口协议,…

使用clion向STM32H7外置flash下载代码

简介 根据安福莱的STM32H7教程,H7单片机的QSPI外设是直接连到芯片内核上的,地址是0X90000000;那么就可以通过QSPI外设,将外置flash内存映射,并由此执行代码。相关操作在keil5上比较简单,配置点东西就行;可以参考安福莱教程。 这里要介绍的是在linux环境下没有keil5 IDE的…

Windows和Ubuntu网络文件共享

Windows11访问Ubuntu22.04共享文件夹 ubuntu配置右键选中需要共享的文件夹,选择属性->本地网络共享;选中共享此目录、允许其他人创建和删除这个文件夹里的文件、允许匿名登陆;并设置共享名配置好之后,点击修改共享。如果没有安装过samba服务,则会提升安装samba相关依赖…

Linux下使用clion+cubemx+openocd开发stm32

简述 后面需要在linux下学习驱动开发,然后不想玩虚拟机,就直接安装了双系统。用kde桌面玩的蛮开心的,就索性把win下的开发内容都搬过来吧 在Linux下开发STM32,使用Clion和Cubemx开发,openocd调试,关于芯片下载,编译器选项,代码起始内容都需要自行通过工程的配置文件修改…