PTA题目集7~8的总结

PTA题目集7~8的总结

一、前言

第七次题目集为家居强电电路模拟程序3。本题模拟的控制设备包括:开关、互斥开关、分档调速器、连续调速器。模拟的受控设备包括:灯、风扇、受控窗帘。两种设备都有两根引脚,通过两根引脚电压的电压差驱动设备工作。输入信息有设备信息、连接信息、控制设备调节信息。考查的知识点有:类与对象、继承、接口、封装、字符串的处理、多态(方法重写与方法重载)。难度较大。

第八次题目集为家居强电电路模拟程序4。由于时间较紧张,pta结束之前没有写完,后来补上。本题新增二极管、管脚电压显示、电流限制、短路检测、并联电路中包含并联电路。

二、设计与分析

1、第七次题目集:家居强电电路模拟程序-3

(1)题目分析

增加互斥开关

互斥开关:

互斥开关有3个引脚:1个是汇总引脚,另两个是分支引脚。开关电路示意图如图1所示,左边是汇总引脚,编号为1;右边两个是分支引脚,右上的输出引脚为2,右下输出引脚为3。图中1、2、3引脚均可以是输入引脚,当1为输入引脚时,2、3引脚为输出引脚;1为输出引脚时,2、3引脚为输入引脚。互斥开关只有两种状态:开关接往上面的2号引脚、接往下面的3号引脚。开关每次只能接通其中一个分支引脚,而另一个分支引脚处于断开状态。互斥开关的默认状态为1、2引脚接通,1、3引脚断开。图1中所示的互斥开关可以反过来接入电路,即汇总引脚接往接地端,两个分支引脚接往电源端。

image.png 为避免短路,互斥开关设置了限流电阻,12引脚之间默认电阻为5,13引脚之间默认电阻为10

增加受控窗帘

本次迭代模拟一种受控窗帘:

受控窗帘的电路符号为S,其最低工作电压为50V,电压达到或超过50V,窗帘即可正常工作,不考虑室外光照强度和室内空间大小等因素,窗帘受室内灯光的光照强度控制。

当电路中所有灯光的光照强度总和在[0,50)lux范围内,窗帘全开;
在[50,100)lux范围内,窗帘打开比例为0.8;
在[100,200)lux范围内,窗帘打开比例为0.6;
在[200,300)lux范围内,窗帘打开比例为0.4;
在[300,400)lux范围内,窗帘打开比例为0.2;
在400lux及以上范围内,窗帘关闭。
当电压低于50V,窗帘不工作,默认为全开状态。
如果电路中没有灯或者灯全部关闭,光照强度为0,窗帘处于全开状态。

受控设备电阻:白炽灯的电阻为 10,日光灯的电阻为 5,吊扇的电阻为 20,落地扇的电阻为 20,窗帘电阻为15

【注意】

本次迭代考虑多个并联电路串联在一起的情况。

考虑一条串联电路中包含其他串联电路的情况。例如:

T3:[VCC K1-1] [K1-2 T2-IN] [T2-OUT K2-1] [K2-2 T1-IN] [T1-OUT GND]

本例中T1\T2两条串联电路T3的一个部分,本题考虑这种类型的输入。

输出信息格式:

输出信息:

按开关、分档调速器、连续调速器、白炽灯、日光灯、吊扇、互斥开关、受控窗帘的顺序依次输出所有设备的状态或参数。每个设备一行。同类设备按编号顺序从小到大输出。

输出格式:

@设备标识+设备编号+":" +设备参数值(控制开关的档位或状态、灯的亮度、风扇的转速,只输出值,不输出单位)
连续调速器的档位信息保留两位小数,即使小数为0,依然显示两位小数.00。
开关状态为0(打开)时显示turned on,状态为1(合上)时显示closed
如:
@K1:turned on
@B1:190
@L1:0.60

互斥开关显示1、2引脚的接通状态,接通时显示closed,断开时显示turned on。

如:

@H1:turned on

受控窗帘显示窗帘打开的百分比,如:

@S1:80%

(2)程序设计与分析

本次程序设计了电路设备类,受控设备和控制设备类继承自电路设备类,开关、分档调速器、连续调速器继承自控制设备类,灯类和电扇类继承自受控设备类、电路类、电源类、接地类。其中,电路类中存放串联电路中所有设备和连接信息,能添加连接信息,添加设备,更新设备状态,输出设备信息。父类——电路设备类中的pin1和pin2分别存放引脚1和引脚2的电压,设备的电压差可由两引脚的差值计算。

  • Device类(电路设备类):有属性引脚1(pin1)、引脚2(pin2)、设备名称(deviceName),构造方法、连接电器方法(用来将其他电器与device连接起来即其他电器的引脚1(pin1)= device的引脚2(pin2))。描述所有电路设备的所有特征。
  • ControlDevice类(控制设备类):有构造方法、抽象方法getPin2()。继承自电路设备类。
  • ControledDevice类(受控设备类):有构造方法。继承自电路设备类。
  • Switch类(开关类):有state属性、无参构造方法、有参构造方法、开关转换方法(toggle())、重写stPin2方法。继承自控制设备类。
  • MutexSwitch类(互斥开关类):有pin3引脚、无参构造方法、有参构造方法、开关转换方法(toggle())。
  • DialSpeedController(分档调速器类):有gear属性、无参构造方法、有参构造方法、降档方法(decreaseGear())、升档方法(increaseGear())。继承自受控设备类。
  • ContinuousSpeedController(连续调速器):有position属性、无参构造方法、有参构造方法。继承自受控设备类。
  • Lamp类(灯类):有亮度(brightness)属性、计算亮度方法(calculateBrightness),继承自ControledDevice类。
  • Fan类(电扇类):有速度(speed)属性、计算亮度方法(calculateSpeed),继承自Fan。
  • FluorescentLight类(白炽灯类):无参构造方法、有参构造方法、重写calculateBrightness方法。继承自Lamp类。
  • IncandescentLamp类(日光灯类):无参构造方法、有参构造方法、重写calculateBrightness方法。继承自Lamp类。
  • PowerSource类(电源类):电压(voltage)属性、连接设备方法、无参构造方法、有参构造方法。
  • Ground类(接地类):电压((voltage)属性、连接设备方法、无参构造方法、有参构造方法。
  • Circuit类(电路类):存放连接信息和电路中的电器,有存放连接信息、存放设备以及输出方法。

2、第八次题目集:家居强电电路模拟程序-4

(1)、题目分析

新增以下内容:

1)增加管脚电压的显示

在输出每个电器的状态信息后,再依次输出该电器每个管脚的电压。(格式详见输出信息部分)

2)电流限制

电器在工作时,过大的电流会引起电器过热,从而烧坏电路。本次迭代,每个元器件都有最大电流的设置,当实时电流超过最大电流时,在该电器输出信息的最后加入提示“exceeding current limit error”,与前面的信息之间用英文空格分隔。

例如:@B1:190 68-17 exceeding current limit error

本题各类电器的最大限定电流如下:

开关20、分档调速器18、连续调速器18、白炽灯9、日光灯5、吊扇12、落地扇14、互斥开关20、受控窗帘12、二极管8。

3)短路检测

如果电路出现无穷大的电流造成短路,所有元器件信息不输出,仅输出提示“short circuit error”

4)并联电路中包含并联

本次迭代考虑并联电路中包含并联电路的情况,即构成并联电路的串联电路可以包含别的并联电路。例如如下输入的电路,并联电路M2的其中一条串联电路T4中包含了另一条并联电路M1:

#T1:[IN D2-1] [D2-2 H1-2] [H1-1 OUT]#T2:[IN D1-1] [D1-2 H1-3] [H1-1 OUT]#M1:[T1 T2]#T4:[IN K3-1] [K3-2 M1-IN] [M1-OUT OUT]#T5:[IN K1-1] [K1-2 B1-1] [B1-2 OUT]#M2:[T4 T5]

5)二极管

增加二极管元件,其电路特性为:正向导通,反向截止;其电器符号如图4所示,当电流从左至右流过时,二极管导通”conduction”,电阻为0;电流从右至左流动时,二极管截止”cutoff”,电阻无穷大,相当于开关打开。

image.png

图2 二极管符号

二极管的标识符为’P’,左侧管脚编号为1,右侧管脚编号为2。

二极管如果两端电压相等,没有电流流过,分以下两种情况输出:

1、如果两端电压为0,二极管的导通/截止状态由接入方向决定,1号引脚靠近电源则状态为导通,反之为截止。
2、如果两端电压不为0,二极管导通。

(2)程序设计与分析

1、在Device类中增加了属性

public abstract class Device {private double pin1;private double pin2;private String name;private double resistance;private double voltage;private double current;public Device() {// TODO Auto-generated constructor stub}public Device(String name) {super();this.name = name;this.pin1 = 0;this.pin2 = 0;this.resistance = 0;this.voltage = 0;this.current = 0;}public Device(double pin1, double pin2, String name, double resistance, double voltage, double current) {super();this.pin1 = pin1;this.pin2 = pin2;this.name = name;this.resistance = resistance;this.voltage = voltage;this.current = current;}public double getPin1() {return pin1;}public void setPin1(double pin1) {this.pin1 = pin1;}public double getPin2() {return pin2;}public void setPin2(double pin2) {this.pin2 = pin2;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void setResistance(double resistance) {this.resistance = resistance;}public double getVoltage() {return pin1-pin2;}public void setVoltage(double voltage) {this.voltage = voltage;}public double getCurrent() {return voltage/resistance;}public void setCurrent(double current) {this.current = current;}public void connectToDevice(Device anotherDevice) {anotherDevice.setPin1(this.getPin2());}public abstract double getResistance();}

用于计算电流、检测短路等。

三、踩坑心得

1、第七次题目集:家居强电电路模拟程序-3

(1)互斥开关类

有两种想法:

1、互斥开关类中有两个开关

2、在互斥开关中增加两个引脚

最终采取第二种

(2)未考虑串联电路中有串联电路的情况

2、第八次题目集:家居强电电路模拟程序-4

(1)二极管元件:正向导通,反向截止。当电流从左至右流过时,二极管导通”conduction”,电阻为0;电流从右至左流动时,二极管截止”cutoff”,电阻无穷大,相当于开关打开。

(2)串联电路中包含串联电路,再包含串联电路,再包含串联电路的情况

(3)未考虑并联电路之前没有开关和调速器的情况:若并联电路之前没有开关和调速器,应设整条电路的电压为220,再进行接下来的操作。

(4)将二极管看做一个开关

四、改进建议

1、能在输入信息最后在某个电路上增加电路元件。

2、能输出电器个数、通路个数等

五、总结

最后的这两次pta做的不好,自己进行了反思,在暑假应继续练习。

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

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

相关文章

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调试,关于芯片下载,编译器选项,代码起始内容都需要自行通过工程的配置文件修改…

银行视频监控智能分析

视频监控智能分析银行系统通过安装在银行的营业厅、取款机处或者银行柜台以及银行门口等区域的各大品牌的终端监控摄像头,视频监控智能分析在系统后台软件上的视频画面内设置智能分析区域,通过上面的操作实现对银行的7*24小时的智能视频监控分析报警,对进出人员行为进行智能…

智慧港口视频智能分析系统解决方案

港口视频监控智能分析系统是对港口各处的监控回传的视频流利用视频监控智能分析技术进行智能分析处理,视频监控智能分析系统将处理结果然后传送到中心管理服务器或者流媒体服务器进行有效管理。监控中心设立在港口控制中心,主要用于相关工作人员进行远程监控和管理。港口监控…

电力视频监控系统

电力视频监控系统通过对电力工程建设领域利用电力视频监控系统进行违规违章操作检测及其他安全区域监测,电力视频监控系统可以降低或减少安全事故造成的人员伤害和设备损害,提升公司社会形象,杜绝违规行为的发生。视频智能分析系统可以进一步强化安全管理,能够降低电力安全…

2024 最新上海市提取公积金缴纳房租 All In One

2024 最新上海市提取公积金缴纳房租 All In One 提取公积金 图解教程2024 最新上海市提取公积金缴纳房租 All In One最新版(亲测可用 ✅)随申办市民云 Apphttps://apps.apple.com/cn/app/随申办市民云/id732618720 提取公积金 图解教程步骤 图解 备注1. 打开随申办 App / 小程序…

Windows上使用VTune分析PyTorchExtension调用的Cpp程序

概述 最近在实现一个通过PyTorch Extension扩展PyTorch算子的C++算法,需要分析代码的运行瓶颈进行针对性优化。Intel VTune就是一个能从汇编级和源码级分析CPU运行瓶颈的工具。由于不明原因我没在服务器上跑通命令行版的VTune,所以把程序搬到Windows下分析了,因此记录一下Wi…

[LeetCode] 80. Remove Duplicates from Sorted Array II

原来leetcode使用Count也不需要import collections class Solution:def removeDuplicates(self, nums: List[int]) -> int:# len =0if len(nums) == 0:return 0# elsecountList = Counter(nums)countModify = {key:min(value,2) for key,value in countList.items()}ret = […

个人标语

从来不觉得自己比任何人差,讨厌懒惰,骄傲自满与妄自菲薄。

IDER如何生成数据库的ER图?

1.打开 IDEA,并连接到 MySQL数据库这里连接到你的数据库 2.在菜单栏中选择"View"->"Tool windows"->"Database" 3.在"Database" 工具窗口中,展开你想要査看的数据库,并选择"ER Diagrams"。 4.右键单击"ER Dia…

服务器系统瘫痪系统损坏数据恢复

故障服务器数据恢复环境: 一台故障服务器;共有4块146G SAS硬盘组成的RAID5;故障服务器分析检测: 服务器在运行过程中系统瘫痪,重装系统后系统损坏。系统中有数据库、网站程序与网页。 服务器数据恢复过程: 1、对全盘reiserfs树节点之间的关联确定原来的reiserfs分区位置镜…

服务器瘫痪,里面存有mysql数据库表结构

最上层,大多数基于网络服务器的工具或服务都有类似架构。 第二层,大多数MySQL的核心服务,包括查询解析、分析、优化、缓存以及所有的内置函数,所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。 第三层,存储引擎负责MySQL中数据的存储和提取。服务器通过AP…

误操作还原VMware虚拟机数据恢复

故障服务器数据恢复环境: 一台故障物理服务器上迁移到ESXI上的虚拟机。故障服务器检测与分析: 虚拟机的数据恢复迁移的状态,数据全部丢失。还原快照操作与删除数据,将该设备上所有虚拟机关机或迁移到其他ESXI上。 恢复数据之前需要先了解vmfs文件系统的底层结构。vmfs文件系…

存储中NAS卷数据丢失数据恢复

故障服务器数据恢复环境: 一台故障存储,支持SAN和NAS存储协议。服务器故障检测与分析: 存储一个NAS卷中的数据丢失,卷大小为2T,经过检查发现丢失数据的类型为office文档、PDF文件、图片文件(JPG、JPEG、PNG等)。 服务器数据恢复过程: 1、准备好备份服务器,将备份服务器…

系统误操作删除数据恢复

故障服务器环境故障: 一台有文件系统的故障服务器,误操作删了服务器上的数据。服务器数据恢复过程: 1、对故障服务器所有硬盘进行扇区级镜像备份。 2、根据文件系统结构和元信息分析文件系统盘序、使用盘数和校验盘个数等信息。 3、全盘扫描节点入口。 4、扫描所有硬盘的底层…

服务器意外断电导致linux数据目录项数据丢失数据恢复

故障服务器数据恢复环境:​ 一台故障列服务器;做的是linux操作系统。服务器故障检测与分析:​ 因机房在运行中,意外断电导致服务器文件丢失。 服务器数据恢复过程:​ 1、将linux服务器连接到数据恢复服务器,以只读模式进行服务器数据备份,所有的数据恢复操作都在备份上进…

IBM服务器硬盘离线数据恢复

服务器数据恢复故障描述: IBM X3850服务器,服务器挂载了5块73G SAS硬盘组成raid5磁盘阵列。2块硬盘离线,RAID崩溃。 服务器存储有oracle数据库,数据恢复+操作系统复原。服务器磁盘阵列数据恢复流程: 1、关闭服务器做数据恢复,服务器关闭状态保护故障服务器原始状态。 2、…

关于家居强电电路模拟程序3和4总结

前言:对于家居强电电路的3和4总结来说,考察了正则表达式,类的运用,程序与设计的基础使用,ArristList 类的使用等等知识点。相对于家居强电电路3来说,4的难度大得多。在3的基础上,加上了引脚的输出电压,对于输出通过引脚的对应电压。那么要判断更多的东西(比如说引脚是…