PTA作业7~8总结

news/2024/7/3 16:25:55/文章来源:https://www.cnblogs.com/lxywrz/p/18275946

目录
  • 1.前言:
  • 2.设计与分析:
    • (1)第七次大作业
    • (2)第八次大作业
  • 3.采坑心得:
  • 4.改进建议:
  • 5.总结:

----------------------------------------------------------------------------------------------------------------------------------
PTA作业总结


1.前言:

 这次的作业相比于前几次的作业来说难度上升了很多,需要很多的时间去写题目以及思考,第七次大作业新增的互斥开关需要考虑的点就有很多,更不要说最后一次的作业,不仅仅增加了二极管,还增加了输出的条件,在输出的时候还要将每个电器的各个电势给输出。本来物理就不是很好,写的就更加头疼,在图书馆里面待了几天,最后写出来的分数也不尽人意。题目的难度虽然增加了,但是可能是到了学期末吧,在Java上花的时间也更多了,没有思路的时候在图书馆里一个人静静的看题目,就又有一点灵感,然后继续写下去。题目变难了,但是新的题目也更加的符合新增的家庭电路,更符合实际的条件,也为我们以后去写相关的代码的时候增加了一些经验,不再会像以前刚碰到此类题目一样无从下手。总的来说的话,第七次作业加的是互斥开关需要考虑的就是它的两个开关的状态,而最后一次作业需要重点考虑的则是每一个电器其两端的电势。

2.设计与分析:

(1)第七次大作业

点击查看题目
7-1 家居强电电路模拟程序-3
分数 100
作者 蔡轲
单位 南昌航空大学
智能家居是在当下家庭中越来越流行的一种配置方案,它通过物联网技术将家中的各种设备(如音视频设备、照明系统、窗帘控制、空调控制、安防系统、数字影院系统、影音服务器、影柜系统、网络家电等)连接到一起,提供家电控制、照明控制、电话远程控制、室内外遥控、防盗报警、环境监测、暖通控制、红外转发以及可编程定时控制等多种功能和手段。与普通家居相比,智能家居不仅具有传统的居住功能,兼备建筑、网络通信、信息家电、设备自动化,提供全方位的信息交互功能。请根据如下要去设计一个智能家居强电电路模拟系统。以下题目介绍中加粗的部分为本次迭代在“家居强电电路模拟程序-2”的基础上增加的功能要求。1、控制设备本题模拟的控制设备包括:开关、分档调速器、连续调速器、互斥开关。开关:包括0和1两种状态。开关有两个引脚,任意一个引脚都可以是输入引脚(接往电源端),而另一个则是输出引脚(接网接地端)。开关状态为0时,无论输入电位是多少,输出引脚电位为0。当开关状态为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 图1 互斥开关为避免短路,互斥开关设置了限流电阻,12引脚之间默认电阻为5,13引脚之间默认电阻为10。分档调速器按档位调整,常见的有3档、4档、5档调速器,档位值从0档-2(3/4)档变化。本次迭代模拟4档调速器,每个档位的输出电位分别为0、0.3、0.6、0.9倍的输入电压。
连续调速器没有固定档位,按位置比例得到档位参数,数值范围在[0.00-1.00]之间,含两位小数。输出电位为档位参数乘以输入电压。
所有调速器都有两个引脚,一个固定的输入(引脚编号为1)、一个输出引脚(引脚编号为2)。当输入电位为0时,输出引脚输出的电位固定为0,不受各类开关调节的影响。开关、调速器的初始状态/档位为0。调速器的输入引脚编号为1,输出引脚编号为2。
除互斥开关外,其他控制设备的电阻为 0。2、受控设备本题模拟的受控设备包括:灯、风扇。两种设备都有两根引脚,通过两根引脚电压的电压差驱动设备工作。灯有两种工作状态:亮、灭。在亮的状态下,有的灯会因引脚电位差的不同亮度会有区别。
风扇在接电后有两种工作状态:停止、转动。风扇的转速会因引脚间电位差的不同而有区别。
本次迭代模拟两种灯具。白炽灯:亮度在0~200lux(流明)之间。
电位差为0-9V时亮度为0,其他电位差按比例,电位差10V对应50ux,220V对应200lux,其他电位差与对应亮度值成正比。白炽灯超过220V。
日光灯:亮度为180lux。
只有两种状态,电位差为0时,亮度为0,电位差不为0,亮度为180。
本次迭代模拟两种风扇。吊扇:工作电压区间为80V-150V,对应转速区间为80-360转/分钟。80V对应转速为80转/分钟,150V对应转速为360转/分钟,超过150V转速为360转/分钟(本次迭代暂不考虑电压超标的异常情况)。其他电压值与转速成正比,输入输出电位差小于80V时转速为0。
落地扇:工作电压区间为 80V-150V,对应转速区间为 80-360 转/分钟;[80V,100V) 对应转速为 80 转/分钟;[100,120)V 对应转速为 160 转/分钟;[120,140)V 对应转速为 260 转/分钟;大于等于 140V 转速 为 360 转/分钟(本次迭代暂不考虑电压超标的异常情况)。本次迭代模拟一种受控窗帘:受控窗帘的电路符号为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。3、输入信息1)输入设备信息分别用设备标识符K、F、L、B、R、D、A、H、S分别表示开关、分档调速器、连续调速器、白炽灯、日光灯、吊扇、落地扇、互斥开关、受控窗帘。设备标识用标识符+编号表示,如K1、F3、L2等。
引脚格式:设备标识-引脚编号,例如:K1-1标识编号为1的开关的输入引脚。开关、分档调速器、连续调速器的输入引脚编号为1,输出引脚编号为2。
受控设备的两个引脚编号分别为1、2。
互斥开关的引脚编号已经在互斥开关的介绍部分说明。
约束条件:不同设备的编号可以相同。
同种设备的编号可以不连续。
设备信息不单独输入,包含在连接信息中。2)输入连接信息一条连接信息占一行,用[]表示一组连接在一起的设备引脚,引脚与引脚之间用英文空格" "分隔。格式:"["+引脚号+" "+引脚号+"]"
例如:[K1-1 K3-2]表示K1的1引脚,K3的2引脚连接在一起。
约束条件:不考虑调速器串联到其他调速器的情况。
考虑各类设备的并联接入。例如,K1 的输出接到 L2 的输入,L2 的输出再接其他设备属于串联接线。K1 的输出接到 L2 的输出,同时 K1 的输入接到 L2 的输入,这种情况属于并联。本次迭代的连接信息不单独输入,包含在线路信息中。3)输入控制设备调节信息开关、互斥开关调节信息格式:#+设备标识K+设备编号,例如:#K2,代表切换K2开关的状态。
#+设备标识H+设备编号,例如:#H2,代表切换H2互斥开关的状态。
分档调速器的调节信息格式:#+设备标识F+设备编号+"+" 代表加一档,例如:#F3+,代表F3输出加一档。
#+设备标识F+设备编号+"-" 代表减一档,例如:#F1-,代表F1输出减一档。
连续调速器的调节信息格式:#+设备标识L+设备编号+":" +数值 代表将连续调速器的档位设置到对应数值,例如:#L3:0.6,代表L3输出档位参数0.6。
4)电源接地标识:VCC,电压220V,GND,电压0V。没有接线的引脚默认接地,电压为0V。5)输入串联电路信息 一条串联电路占一行,串联电路由按从靠电源端到接地端顺序依次输入的 n 个连接 信息组成,连接信息之间用英文空格" "分隔。串联电路信息格式:"#T"+电路编号+":"+连接信息+" "+连接信息+...+" "+连接信息
例如:#T1:[IN K1-1] [K1-2 D2-1] [D2-2 OUT] 一个串联电路的第一个引脚是 IN,代表起始端,靠电源。最后一个引脚是 OUT,代表结尾端, 靠接地。
约束条件:不同的串联电路信息编号不同。输入的最后一条电路信息必定是总电路信息,总电路信息的起始引脚是 VCC,结束引脚是 GND。连接信息中的引脚可能是一条串联或并联电路的 IN 或者 OUT。例如:#T1:[IN K1-1] [K1-2 T2-IN] [T2-OUT OUT]#T1:[IN K1-1] [K1-2 T2-IN] [T2-OUT M2-IN] [M2-OUT OUT]6)输入并联电路信息 一条并联电路占一行,并联电路由其包含的几条串联电路组成,串联电路标识之间用英文空格" "分隔。格式:"#M"+电路编号+":"+”[”+串联电路信息+" "+....+" "+串联电路信息+”]”
例如:#M1:[T1 T2 T3]
该例声明了一个并联电路,由 T1、T2、T3 三条串联电路并联而成,三条串联电路的 IN 短 接在一起构成 M1 的 IN,三条串联电路的 OUT 短接在一起构成 M1 的 OUT。
约束条件:本次迭代不考虑并联电路中包含并联电路的情况。 
本题不考虑输入电压或电压差超过220V的情况。输入信息以end为结束标志,忽略end之后的输入信息。本题中的并联信息所包含的串联电路的信息都在并联信息之前输入,不考虑乱序输入的情况。
只要不因短路而造成无穷大的电流烧坏电路(如电路中的部分短接),都是合理情况,在测试点的考虑范围之内。会造成无穷大的电流的短路本次迭代不考虑。本次迭代考虑多个并联电路串联在一起的情况。本题考虑一条串联电路中包含其他串联电路的情况。例如:#T3:[VCC K1-1] [K1-2 T2-IN] [T2-OUT K2-1] [K2-2 T1-IN] [T1-OUT GND]本例中T1\T2两条串联电路T3的一个部分,本题考虑这种类型的输入。4、输出信息:按开关、分档调速器、连续调速器、白炽灯、日光灯、吊扇、互斥开关、受控窗帘的顺序依次输出所有设备的状态或参数。每个设备一行。同类设备按编号顺序从小到大输出。输出格式:@设备标识+设备编号+":" +设备参数值(控制开关的档位或状态、灯的亮度、风扇的转速,只输出值,不输出单位)
连续调速器的档位信息保留两位小数,即使小数为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%5、家居电路模拟系列所有题目的默认规则:1)当计算电压值等数值的过程中,最终结果出现小数时,用截尾规则去掉小数部分,只保留整数部分。为避免精度的误差,所有有可能出现小数的数值用double类型保存并计算,不要作下转型数据类型转换,例如电压、转速、亮度等,只有在最后输出时再把计算结果按截尾规则,舍弃尾数,保留整数输出。2)所有连接信息按电路从电源到接地的顺序依次输入,不会出现错位的情况。电源VCC一定是第一个连接的第一项,接地GND一定是最后一个连接的后一项。3)连接信息如果只包含两个引脚,靠电源端的引脚在前,靠接地端的在后。4)调速器的输入端只会直连VCC,不会接其他设备。整个电路最多只有连接在电源上的一个调速器,且不包含在并联单路中。6、家居电路模拟系列1-4题目后续迭代设计:1)电路结构变化:迭代1:只有一条线路,所有元件串联
迭代2:线路中包含一个并联电路
迭代3:线路中包含多个串联起来的并联电路
迭代4:并联电路之间可能出现包含关系电路结构变化示意图见图1。2)计算方式的变化迭代1只包含1个受控元件,不用计算电流,之后的电路计算要包含电流、电阻等电路参数。3)电路元件的变化每次迭代会增加1-2个新的电路元件。image.png图1:电路结构示意图设计建议:1、电路设备类:描述所有电路设备的公共特征。2、受控设备类、控制设备类:对应受控、控制设备3、串联电路类:一条由多个电路设备构成的串联电路,也看成是一个独立的电路设备4、并联电路类:继承电路设备类,也看成是一个独立的电路设备其他类以及类的属性、方法自行设计。image.png图2:建议设计类图输入样例1:
在这里给出一组输入。例如:#T1:[IN H1-1] [H1-2 D2-1] [D2-2 OUT]
#T2:[IN H1-1] [H1-3 D1-1] [D1-2 OUT]
#M1:[T1 T2]
#T4:[IN K3-1] [K3-2 B2-1] [B2-2 OUT]
#T5:[IN K1-1] [K1-2 B1-1] [B1-2 OUT]
#M2:[T4 T5]
#T3:[VCC K2-1] [K2-2 M1-IN] [M1-OUT M2-IN] [M2-OUT GND]
#K1
#K2
end
输出样例1:
在这里给出相应的输出。例如:@K1:closed
@K2:closed
@K3:turned on
@B1:87
@B2:0
@D1:0
@D2:262
@H1:closed
输入样例2:
在这里给出一组输入。例如:#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 B2-1] [B2-2 OUT]
#T5:[IN K1-1] [K1-2 B1-1] [B1-2 OUT]
#M2:[T4 T5]
#T3:[VCC K2-1] [K2-2 M1-IN] [M1-OUT M2-IN] [M2-OUT GND]
#K1
#K2
end
输出样例2:
在这里给出相应的输出。例如:@K1:closed
@K2:closed
@K3:turned on
@B1:87
@B2:0
@D1:0
@D2:262
@H1:closed
输入样例3:
在这里给出一组输入。例如:#T1:[IN K1-1] [K1-2 B2-1] [B2-2 OUT]
#T2:[IN K2-1] [K2-2 R1-1] [R1-2 OUT]
#M1:[T1 T2]
#T3:[VCC K3-1] [K3-2 M1-IN] [M1-OUT S1-1] [S1-2 GND]
#K1
#K2
#K3
end
输出样例3:
在这里给出相应的输出。例如:@K1:closed
@K2:closed
@K3:closed
@B2:71
@R1:180
@S1:40%
输入样例4:
在这里给出一组输入。例如:#T1:[IN K2-1] [K2-2 D2-1] [D2-2 OUT]
#T2:[IN K3-1] [K3-2 D1-1] [D1-2 OUT]
#T3:[VCC K1-1] [K1-2 T1-IN] [T1-OUT T2-IN] [T2-OUT GND]
#K1
#K2
#K3
end
输出样例4:
在这里给出相应的输出。例如:@K1:closed
@K2:closed
@K3:closed
@D1:200
@D2:200
输入样例5:
在这里给出一组输入。例如:#T3:[VCC B2-1] [B2-2 K1-1] [K1-2 S1-1] [S1-2 H1-1] [H1-2 GND]
#K1
end
输出样例5:
在这里给出相应的输出。例如:@K1:closed
@B2:95
@H1:closed
@S1:80%

我的代码:

点击查看代码
import java.util.*;
import java.io.FileNotFoundException;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;class Electric {// 主电器public String s;// 类型public String id;// 类型idpublic double shuV = 220;// 电压public String ofopen = "turned on";// 开关K的状态public int speed = 0;//public double lin = 0.00;//public int resistance;// 电阻public int lux;public int xuhao;public Electric(String s, String id) {this.s = s;this.id = id;}public void display() {}public void regulate(String vs) {}public void reshuV(double shuop) {}public int getL(){return 0;}public int fanhui() {// 比较器用到的if (s.equals("K"))return 9;else if (s.equals("F"))return 8;else if (s.equals("L"))return 7;else if (s.equals("B"))return 6;else if (s.equals("R"))return 5;else if (s.equals("D"))return 4;else if (s.equals("A"))return 3;else if (s.equals("H"))return 2;else if (s.equals("S"))return 1;elsereturn 0;}}class Kaiguan extends Electric {// 开关public Kaiguan(String id) {super("K", id);}public void display() {System.out.printf("@K%s:%s\n", id, ofopen);}public void regulate(String vs) {}public void reshuV(double shuop) {if (ofopen.equals("turned on")) {shuV = 0;// System.out.println(shuV);} else if (ofopen.equals("closed"))shuV = shuop;}
}class Fendang extends Electric {// 分档public Fendang(String id) {super("F", id);}public void display() {System.out.printf("@F%s:%d\n", id, speed);}public void regulate(String vs) {// 分档调节if (vs.equals("+") && speed < 3) {speed++;} else if (vs.equals("-") && speed > 0) {speed--;}}public void reshuV(double shuop) {shuV = speed * 0.3 * shuop;}
}class Lianxu extends Electric {// 连续public Lianxu(String id) {super("L", id);}public void display() {String siop = String.format("@L%s:%.2f", id, lin);System.out.printf("%s\n", siop);}public void regulate(String vs) {lin = Double.parseDouble(vs);}public void reshuV(double shuop) {shuV = lin * shuop;}
}class Baichi extends Electric {// 白炽灯public Baichi(String id) {super("B", id);}public void display() {int a = 0;if (shuV >= 0 && shuV <= 9) {a = 0;} else if (shuV >= 10 && shuV <= 219) {a = (int) ((5 * shuV) / 7 + 43);} else if (shuV == 220) {a = 200;}System.out.printf("@B%s:%d\n", id, a);}public void reshuV(double shuop) {shuV = shuop;}public int getL(){int a = 0;if (shuV >= 0 && shuV <= 9) {a = 0;} else if (shuV >= 10 && shuV <= 219) {a = (int) ((5 * shuV) / 7 + 43);} else if (shuV == 220) {a = 200;}return a;}
}class Riguang extends Electric {// 日光灯public Riguang(String id) {super("R", id);}public void display() {int a = 0;if (shuV == 0)a = 0;elsea = 180;System.out.printf("@R%s:%d\n", id, a);}public void reshuV(double shuop) {shuV = shuop;}public int getL(){int a = 0;if (shuV == 0)a = 0;elsea = 180;return a;}
}class Diaoshan extends Electric {// 吊扇public Diaoshan(String id) {super("D", id);}public void display() {int a = 0;if (shuV >= 0 && shuV < 80)a = 0;else if (shuV >= 80 && shuV <= 150)a = (int) ((shuV - 80) * 4 + 80);else if (shuV > 150)a = 360;System.out.printf("@D%s:%d\n", id, a);}public void reshuV(double shuop) {shuV = shuop;}}class Luodi extends Electric {// 落地扇public Luodi(String id) {super("A", id);}public void display() {int a = 0;if (shuV >= 0 && shuV < 80)a = 0;else if (shuV >= 80 && shuV <= 99)a = 80;else if (shuV >= 100 && shuV <= 119)a = 160;else if (shuV >= 120 && shuV <= 139)a = 260;else if (shuV > 140)a = 360;System.out.printf("@A%s:%d\n", id, a);}public void reshuV(double shuop) {shuV = shuop;}
}class Huchi extends Electric{public Huchi(String id,int d){super("H", id);this.xuhao=d;}public void display() {System.out.printf("@H%s:%s\n", id, ofopen);}public void regulate(String vs) {}public void reshuV(double shuop) {if (ofopen.equals("turned on")) {shuV = 0;} else if (ofopen.equals("closed"))shuV = shuop;}}class Shoukong extends Electric{//R=15public Shoukong(String id) {super("S", id);}public void display() {String a = "100%";if(shuV>=50){if (lux >= 0 && lux < 50)a = "100%";else if (lux >= 50 && lux < 100)a =  "80%";else if (lux >= 100 && lux < 200)a = "60%";else if (lux >= 200 && lux < 300)a = "40%";else if (lux >= 300 && lux <400)a = "20%";else if (lux >=400)a = "0%";System.out.printf("@S%s:%s\n", id, a);}else {System.out.printf("@S%s:%s\n", id,a);}}public void reshuV(double shuop) {shuV = shuop;}
}class Bi extends Electric {public Bi(String ml) {super("M", ml);}
}class Chuan extends Electric{public Chuan(String ml){super("T",ml);}
}class Duobing{public String s;public ArrayList<Map<String, Electric>> map;public double k[];public Duobing(String s,ArrayList<Map<String, Electric>> map,double b[]){this.s=s;this.map=map;this.k=b;}
}public class Main {public static void main(String[] args) throws FileNotFoundException {Scanner in = new Scanner(System.in);String s = "", pop = "", zong = "", chuanxu = "", bingxu = "";int i;ArrayList<String> connection = new ArrayList<>();ArrayList<String> connection1 = new ArrayList<>();ArrayList<String> chw = new ArrayList<>();while (true) {s = in.nextLine().trim();if ("end".equals(s))break;if (s.startsWith("#T"))// 将每一条路线存进去{Pattern pattern = Pattern.compile("#(.*):(.*)");Matcher matcher = pattern.matcher(s);while (matcher.find()) {chuanxu = String.valueOf(matcher.group(1));pop = String.valueOf(matcher.group(2));}connection.add(chuanxu + ":" + pop);}else if (s.startsWith("#M"))// 将并联的电路放进去,后面进行判断{Pattern pattern = Pattern.compile("#(.*):(.*)");Matcher matcher = pattern.matcher(s);while (matcher.find()) {bingxu = String.valueOf(matcher.group(1));pop = String.valueOf(matcher.group(2));}connection1.add(bingxu + " " + pop);}else if (s.startsWith("#K"))// 对开关进行储存后面进行更改{Pattern pattern = Pattern.compile("#(.*)");Matcher matcher = pattern.matcher(s);while (matcher.find()) {pop = String.valueOf(matcher.group(1));}chw.add(pop);}else if (s.startsWith("#F")) {Pattern pattern = Pattern.compile("#(.*)");Matcher matcher = pattern.matcher(s);while (matcher.find()) {pop = String.valueOf(matcher.group(1));}chw.add(pop);}else if (s.startsWith("#L")) {Pattern pattern = Pattern.compile("#(.*)");Matcher matcher = pattern.matcher(s);while (matcher.find()) {pop = String.valueOf(matcher.group(1));}chw.add(pop);}else if(s.startsWith("#H")){Pattern pattern = Pattern.compile("#(.*)");Matcher matcher = pattern.matcher(s);while (matcher.find()) {pop = String.valueOf(matcher.group(1));}chw.add(pop);}}int kllk = 0, mmm = 0;String z1 = "", zm = "";String bnb="";Map<String, Map<String, Electric>> mac = new HashMap<>();Map<String, Electric> zhu = new LinkedHashMap<>();Map<String, Electric> map4 = new HashMap<>();for (mmm = 0; mmm < connection.size(); mmm++) {// 将并联的与串联的电路分开储存int vb1 = 0, vb2 = 0;Map<String, Electric> map1 = new LinkedHashMap<>();z1 = connection.get(mmm);Pattern pattern = Pattern.compile("(.*):(.*)");Matcher matcher = pattern.matcher(z1);while (matcher.find()) {zm = String.valueOf(matcher.group(1));pop = String.valueOf(matcher.group(2));}//System.out.println(zm);String[] partsl = pop.split("]");String jk = "", jk1 = "";for (kllk = 0; kllk < partsl.length; kllk++) {jk1 = partsl[0].trim();jk = partsl[kllk].trim();//System.out.println(jk);if (jk1.startsWith("[IN")) {vb1 = 1;String[] parts4 = jk.split(" ");//System.out.println(parts4[0]);if(parts4[1].equals("OUT")){if(parts4[0].startsWith("[H")) {String[] pinyin = parts4[0].split("-");String dkey="";pattern = Pattern.compile("\\[(.*)");matcher = pattern.matcher(pinyin[0]);while (matcher.find()) {dkey = String.valueOf(matcher.group(1));}if (dkey.startsWith("H")) {int m1 = Integer.parseInt(pinyin[1]);if ((m1 == 2 || m1 == 3) && parts4[0] != null) {bnb = parts4[0].substring(1, 3);map1 = compose(dkey, bnb, map1, m1);}}break;}else {break;}}if(parts4[0].startsWith("[H")){String[] pinyin = parts4[0].split("-");String dkey="";pattern = Pattern.compile("\\[(.*)");matcher = pattern.matcher(pinyin[0]);while (matcher.find()) {dkey = String.valueOf(matcher.group(1));}if(dkey.startsWith("H")) {int m1=Integer.parseInt(pinyin[1]);if((m1==2||m1==3)&&parts4[0]!=null){//System.out.println(parts4[0]);bnb=parts4[0].substring(1,3);map1 = compose(dkey, bnb, map1,m1);}}if(parts4[1].equals("OUT"))break;String[] pinyin1 = parts4[1].split("-");dkey = pinyin1[0].trim();if(dkey.startsWith("H")){int m1=Integer.parseInt(pinyin1[1]);if(m1==2||m1==3){map1 = compose(dkey, parts4[1], map1,m1);}}else{map1 = complain(dkey, parts4[1], map1,1);}}else {String[] pinyin = parts4[1].split("-");//System.out.println(parts4[1]);String dkey = pinyin[0].trim();if(dkey.startsWith("H")){int m1=Integer.parseInt(pinyin[1]);if(m1==2||m1==3){map1 = compose(dkey, parts4[1], map1,m1);}}else{map1 = complain(dkey, parts4[1], map1,1);}}}else if (jk1.startsWith("[VCC")) {//System.out.println(1);vb2 = 1;String[] parts4 = jk.split(" ");if(parts4[1].equals("GND")){if(parts4[0].startsWith("[H")) {String[] pinyin = parts4[0].split("-");String dkey="";pattern = Pattern.compile("\\[(.*)");matcher = pattern.matcher(pinyin[0].trim());while (matcher.find()) {dkey = String.valueOf(matcher.group(1));}if (dkey.startsWith("H")) {int m1 = Integer.parseInt(pinyin[1]);if ((m1 == 2 || m1 == 3) && parts4[0] != null) {bnb = parts4[0].substring(1, 3);map1 = compose(dkey, bnb, map1, m1);}}break;}else {break;}}if(parts4[0].startsWith("[H")){String[] pinyin = parts4[0].split("-");String dkey="";pattern = Pattern.compile("\\[(.*)");matcher = pattern.matcher(pinyin[0].trim());while (matcher.find()) {dkey = String.valueOf(matcher.group(1));}if(dkey.startsWith("H")) {int m1=Integer.parseInt(pinyin[1]);//System.out.println(dkey+" "+ parts4[0]);if((m1==2||m1==3)&&parts4[0]!=null){bnb=parts4[0].substring(1,3);map1 = compose(dkey, bnb, map1,m1);}}if(parts4[1].equals("GND"))break;String[] pinyin1 = parts4[1].split("-");dkey = pinyin1[0].trim();if(dkey.startsWith("H")){int m1=Integer.parseInt(pinyin1[1]);if(m1==2||m1==3){map1 = compose(dkey, parts4[1], map1,m1);}}else{map1 = complain(dkey, parts4[1], map1,1);}}else {String[] pinyin = parts4[1].split("-");//System.out.println(parts4[1]);String dkey = pinyin[0].trim();if(dkey.startsWith("H")){int m1=Integer.parseInt(pinyin[1]);if(m1==2||m1==3){map1 = compose(dkey, parts4[1], map1,m1);}}else{map1 = complain(dkey, parts4[1], map1,1);}}}}if (vb1 == 1){mac.put(zm, map1);// 并联电路以及其他电路//System.out.println(mac.size());}if (vb2 == 1) {zhu = map1;// 主电路}}//System.out.println(zhu.size());int flag = 0;int flag2 = 0;int lll = 0;double rui = 220.0000000001;for (i = 0; i < chw.size(); i++) {String sid = chw.get(i);for (Entry<String, Map<String, Electric>> entry : mac.entrySet()){if (sid.startsWith("K")) {String diu = sid.trim();Electric electric = entry.getValue().get(diu);if (electric != null) {if (electric.ofopen.equals("turned on"))electric.ofopen = "closed";elseelectric.ofopen = "turned on";break;}}else if (sid.startsWith("F")) {String diu="";String vs="";Pattern pattern = Pattern.compile("(.*)(.)");Matcher matcher = pattern.matcher(sid);while (matcher.find()) {diu = String.valueOf(matcher.group(1));vs = String.valueOf(matcher.group(2));}Electric electric = entry.getValue().get(diu);if (electric != null) {electric.regulate(vs);flag2++;if (vs.equals("+")) {flag++;if (flag >= 3) {flag = 3;}}if (vs.equals("-")) {flag--;if (flag <= 0) {flag = 0;}}break;}}else if (sid.startsWith("L")) {String diu = sid.substring(0, 2);String vs = sid.substring(3);Electric electric = entry.getValue().get(diu);if (electric != null) {electric.regulate(vs);break;}}else if(sid.startsWith("H")){String diu = sid.trim();int n1=0;int n2=0;for (Entry<String, Map<String, Electric>> try1 : mac.entrySet()){Electric electric = try1.getValue().get(diu+2);if (electric != null) {n1=1;if (electric.ofopen.equals("turned on"))electric.ofopen = "closed";elseelectric.ofopen = "turned on";//System.out.println(electric.ofopen+"    "+electric.xuhao);break;}}for (Entry<String, Map<String, Electric>> try1 : mac.entrySet()){Electric electric1 = try1.getValue().get(diu+3);if (electric1 != null) {n2=1;if (electric1.ofopen.equals("turned on"))electric1.ofopen = "closed";elseelectric1.ofopen = "turned on";//System.out.println(electric1.ofopen+"    "+electric1.xuhao);break;}}if(n1==1||n2==1)break;}}for (Entry<String, Electric> entry : zhu.entrySet()) {if (sid.startsWith("K")) {String diu = sid.trim();Electric electric = zhu.get(diu);if (electric != null) {if (electric.ofopen.equals("turned on"))electric.ofopen = "closed";elseelectric.ofopen = "turned on";break;}}else if (sid.startsWith("H")) {String diu = sid.trim();int n1=0;int n2=0;for (Entry<String, Electric> try1 : zhu.entrySet()){Electric electric = zhu.get(diu+2);if (electric != null) {n1=1;if (electric.ofopen.equals("turned on"))electric.ofopen = "closed";elseelectric.ofopen = "turned on";break;}}for (Entry<String, Electric> try1 : zhu.entrySet()){Electric electric1 = zhu.get(diu+3);if (electric1 != null) {n2=1;if (electric1.ofopen.equals("turned on"))electric1.ofopen = "closed";elseelectric1.ofopen = "turned on";break;}}if(n1==1||n2==1)break;}else if (sid.startsWith("F")) {String diu="";String vs="";Pattern pattern = Pattern.compile("(.*)(.)");Matcher matcher = pattern.matcher(sid);while (matcher.find()) {diu = String.valueOf(matcher.group(1));vs = String.valueOf(matcher.group(2));}Electric electric = zhu.get(diu);if (electric != null) {electric.regulate(vs);flag2++;break;}}else if (sid.startsWith("L")) {String diu = sid.substring(0, 2);String vs = sid.substring(3);Electric electric = zhu.get(diu);if (electric != null) {electric.regulate(vs);break;}}}}Map<String,ArrayList<Map<String, Electric>>> vjk=new LinkedHashMap<>();Map<String, Map<String, Electric>> maps = new HashMap<>();for (mmm = 0; mmm < connection1.size(); mmm++) {// 判断那些事并联电路并存储String k11 = connection1.get(mmm).substring(0, 2);Pattern pattern = Pattern.compile("(.*)\\s\\[(.*)]");Matcher matcher = pattern.matcher(connection1.get(mmm));while (matcher.find()) {pop = String.valueOf(matcher.group(2));}String[] partsl = pop.split(" ");ArrayList<Map<String, Electric>> uzi=new ArrayList<>();for (int yq = 0; yq < partsl.length; yq++) {for (Entry<String, Map<String, Electric>> entry1 : mac.entrySet()) {if (entry1.getKey().equals(partsl[yq])) {maps.put(k11 + "" + yq, entry1.getValue());uzi.add(entry1.getValue());//System.out.println(uzi.size());}}vjk.put(k11,uzi);}}//System.out.println(vjk.size());double siop = rui;double a[] = new double[vjk.size()];// 算电阻//vjk是并联电路所对应的路的Listdouble b[] = new double[1];i = 0;int sum1,sum2,sum3;sum2=0;int s1=0,mv=0;double chuanR=0, bingR=0;int zonglux=0;int cw=0,cw1=0;ArrayList<Duobing> duobing=new ArrayList<>();for(Entry<String,ArrayList<Map<String, Electric>>> entry : vjk.entrySet()) {double[] c= new double[entry.getValue().size()];i = 0;cw=0;for (sum1 = 0; sum1 < entry.getValue().size(); sum1++) {for (Entry<String, Electric> entry1 : entry.getValue().get(sum1).entrySet()) {int hjh = 0;flag = 0;if (entry1.getKey().startsWith("K")) {if (entry1.getValue().ofopen.equals("turned on"))flag = 1;if (entry1.getValue().ofopen.equals("closed"))hjh++;}if (entry1.getKey().startsWith("H")) {if (entry1.getValue().ofopen.equals("turned on")){flag = 1;//System.out.println(entry1.getValue().xuhao);}if (entry1.getValue().ofopen.equals("closed")) {hjh++;//System.out.println(entry1.getValue().xuhao);}}if(entry1.getKey().startsWith("T")){cw=0;for(Entry<String, Map<String, Electric>> en6 : mac.entrySet()) {if (en6.getKey().equals(entry1.getKey())) {for(Entry<String, Electric> e : en6.getValue().entrySet()){cw++;if (e.getKey().startsWith("K")) {if (e.getValue().ofopen.equals("turned on"))flag = 1;if (e.getValue().ofopen.equals("closed"))hjh++;}if (e.getKey().startsWith("H")) {if (e.getValue().ofopen.equals("turned on")){flag = 1;//System.out.println(entry1.getValue().xuhao);}if (e.getValue().ofopen.equals("closed")) {hjh++;//System.out.println(entry1.getValue().xuhao);}}c[i] = c[i] + 1.0 * e.getValue().resistance;}cw1=cw+cw1;}}}if (hjh == entry.getValue().size()+cw1) {c[i] = 0;//说明短路break;}if (flag == 1)//说明断路{c[i] = -1;break;}else {c[i] = c[i] + 1.0 * entry1.getValue().resistance;}}i++;}duobing.add(new Duobing(entry.getKey(), entry.getValue(), c));s1=0;for (i = 0; i < c.length; i++) {if (c[i] == 0) {a[sum2] = 0;//短路break;}else {if (c[i] == -1){s1++;if(s1==c.length){mv=1;}continue;}else {a[sum2] = 1.0 / c[i] + a[sum2];//System.out.println(a[sum2]);}}}sum2++;}for(sum3=0;sum3<a.length;sum3++){if (a[sum3] == 0)continue;else{bingR = bingR+1.0/a[sum3];}}//System.out.println(bingR);b[0]=0;double l[]=new double[1];int flag4 = 0;int f1=0;for (Entry<String, Electric> entry : zhu.entrySet()) {flag=0;if (entry.getKey().startsWith("K")) {flag=0;if (entry.getValue().ofopen.equals("turned on")){flag = 1;}if(flag==1){b[0] = -1;break;}}else if (entry.getKey().startsWith("H")) {flag=0;if (entry.getValue().ofopen.equals("turned on")){flag = 1;}if(flag==1){b[0] = -1;break;}}else if(entry.getKey().startsWith("T")){l[0]=0;for(Entry<String, Map<String, Electric>> entry6 : mac.entrySet()) {if(entry6.getKey().equals(entry.getKey())) {for(Entry<String, Electric> en : entry6.getValue().entrySet()) {if (en.getKey().startsWith("K")) {flag4=0;if (en.getValue().ofopen.equals("turned on")) {flag4 = 1;}if (flag4 == 1) {l[0] = -1;break;}}else if(en.getKey().startsWith("H")){flag4=0;if (en.getValue().ofopen.equals("turned on")) {flag4 = 1;}if (flag4 == 1) {l[0] = -1;break;}elsel[0]=l[0]+en.getValue().resistance;}elsel[0]=l[0]+en.getValue().resistance;}break;}}if(l[0]==-1){b[0]=-1;break;}else{b[0]=b[0]+l[0];}}b[0] = b[0] + entry.getValue().resistance;}chuanR = b[0];//System.out.println(chuanR+"   "+bingR);double chuanV = 0, bingV = 0;chuanV = rui * chuanR / (bingR + chuanR);bingV = rui * bingR / (bingR + chuanR);zonglux=0;Map<String, Electric> maso = new HashMap<>();for (Entry<String, Electric> entry : zhu.entrySet()) {String parts8 = entry.getKey();s = parts8;if(b[0]==-1||flag4==1||flag==1||mv==1){siop=0;rui=0;chuanV=0;bingV=0;}if (s.startsWith("K")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(rui);rui = elc1.shuV;chuanV = 1.0*rui * chuanR / (bingR + chuanR);bingV = 1.0*rui * bingR / (bingR + chuanR);maso.put(s, elc1);}else if (s.startsWith("H")) {Electric elc1 = zhu.get(parts8);if(elc1.xuhao ==3){if(elc1.ofopen.startsWith("t")){elc1.ofopen="closed";}else{elc1.ofopen="turned on";}}maso.put(s, elc1);}else if (s.startsWith("B")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(10*chuanV/chuanR);zonglux=zonglux+elc1.getL();//System.out.println(elc1.shuV);maso.put(s, elc1);}else if (s.startsWith("R")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(5*chuanV/chuanR);maso.put(s, elc1);zonglux=zonglux+elc1.getL();}else if (s.startsWith("D")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(20*chuanV/chuanR);maso.put(s, elc1);}else if (s.startsWith("A")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(20*chuanV/chuanR);maso.put(s, elc1);}else if (s.startsWith("L")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(rui);rui = elc1.shuV;chuanV = rui * chuanR / (bingR + chuanR);bingV = rui * bingR / (bingR + chuanR);//System.out.println(bingR);maso.put(s, elc1);}else if (s.startsWith("F")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(rui);rui=elc1.shuV;chuanV = rui * chuanR / (bingR + chuanR);bingV = rui * bingR / (bingR + chuanR);maso.put(s, elc1);}else if (s.startsWith("S")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(15*chuanV/chuanR);maso.put(s, elc1);}else if(s.startsWith("T")) {//System.out.println("1");for(Entry<String, Map<String, Electric>> entry6 : mac.entrySet()) {if(entry6.getKey().equals(s)){//System.out.println(chuanR);for(Entry<String,Electric> jk : entry6.getValue().entrySet()) {s=jk.getKey();if (s.startsWith("K")) {Electric elc1 = entry6.getValue().get(s);maso.put(s, elc1);}else if(s.startsWith("H")) {Electric elc1 = entry6.getValue().get(s);if(elc1.xuhao ==3){if(elc1.ofopen.startsWith("t")){elc1.ofopen="closed";}else{elc1.ofopen="turned on";}}maso.put(s, elc1);}else if (s.startsWith("B")) {Electric elc1 = entry6.getValue().get(s);elc1.reshuV(10 * chuanV / chuanR);maso.put(s, elc1);zonglux=zonglux+elc1.getL();}else if (s.startsWith("R")) {Electric elc1 = entry6.getValue().get(s);elc1.reshuV(5 * chuanV / chuanR);maso.put(s, elc1);zonglux=zonglux+elc1.getL();}else if (s.startsWith("D")) {Electric elc1 = entry6.getValue().get(s);elc1.reshuV(20 * chuanV / chuanR);maso.put(s, elc1);//System.out.println(elc1.shuV);}else if (s.startsWith("A")) {Electric elc1 = entry6.getValue().get(s);elc1.reshuV(20 * chuanV / chuanR);maso.put(s, elc1);}else if (s.startsWith("S")) {Electric elc1 = entry6.getValue().get(s);elc1.reshuV(15 * chuanV / chuanR);maso.put(s, elc1);}}}}}else if (s.startsWith("M")) {for(int cmd=0;cmd<duobing.size();cmd++){if(duobing.get(cmd)==null)continue;Duobing d1=duobing.get(cmd);     //public ArrayList<Map<String, Electric>> map;if(d1.s.equals(s)){for(int kkkk=0;kkkk<d1.map.size();kkkk++){if(d1.map.get(kkkk)==null)continue;siop=bingV*(1/a[cmd])/bingR;if(a[cmd]==0){siop=0;for(Entry<String,Electric>c1:d1.map.get(kkkk).entrySet()){parts8 = c1.getKey();s = parts8;if (s.startsWith("K")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);if (elc1.ofopen.startsWith("t")) {siop = 0;}maso.put(s, elc1);}else if (s.startsWith("H")) {int yy=0;Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);if (elc1.ofopen.startsWith("t")) {siop = 0;}if(elc1.xuhao==2){maso.put(s, elc1);}else if(elc1.xuhao==3){String jkj="";Pattern pattern = Pattern.compile("(.*).");Matcher matcher = pattern.matcher(s);while (matcher.find()) {jkj = String.valueOf(matcher.group(1));}for(int d=0;d<d1.map.size();d++) {for (Entry<String, Electric> c2 : d1.map.get(d).entrySet()) {Electric elc2 = d1.map.get(d).get(jkj+2);if(elc2!=null)yy=1;}}if(yy==0){if(elc1.ofopen.startsWith("t"))elc1.ofopen="closed";elseelc1.ofopen="turned on";maso.put(s, elc1);}}}else if (s.startsWith("B")) {//System.out.println(10*siop/a[i]);Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);// System.out.println(elc1.shuV);maso.put(s, elc1);zonglux=zonglux+elc1.getL();}else if (s.startsWith("R")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);maso.put(s, elc1);zonglux=zonglux+elc1.getL();}else if (s.startsWith("D")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);//System.out.println(elc1.shuV);maso.put(s, elc1);}else if (s.startsWith("A")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);maso.put(s, elc1);}else if (s.startsWith("S")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);maso.put(s, elc1);}}}if(d1.k[kkkk]!=-1&&d1.k[kkkk]!=0) {for (Entry<String, Electric> c1 : d1.map.get(kkkk).entrySet()) {parts8 = c1.getKey();s = parts8;//System.out.printf(s);if (s.startsWith("K")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);if (elc1.ofopen.startsWith("t")) {siop = 0;}maso.put(s, elc1);}else if (s.startsWith("H")) {int yy=0;Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);if (elc1.ofopen.startsWith("t")) {siop = 0;}if(elc1.xuhao==2){maso.put(s, elc1);}else if(elc1.xuhao==3){String jkj="";Pattern pattern = Pattern.compile("(.*).");Matcher matcher = pattern.matcher(s);while (matcher.find()) {jkj = String.valueOf(matcher.group(1));}for(int d=0;d<d1.map.size();d++) {for (Entry<String, Electric> c2 : d1.map.get(d).entrySet()) {Electric elc2 = d1.map.get(d).get(jkj+2);if(elc2!=null)yy=1;}}if(yy==0){if(elc1.ofopen.startsWith("t"))elc1.ofopen="closed";elseelc1.ofopen="turned on";maso.put(s, elc1);}}}else if (s.startsWith("B")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(10 * siop/ d1.k[kkkk]);maso.put(s, elc1);zonglux=zonglux+elc1.getL();}else if (s.startsWith("R")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(5 * siop/ d1.k[kkkk]);maso.put(s, elc1);zonglux=zonglux+elc1.getL();}else if (s.startsWith("D")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(20 * siop/ d1.k[kkkk]);maso.put(s, elc1);}else if (s.startsWith("A")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(20 * siop/ d1.k[kkkk]);maso.put(s, elc1);}else if (s.startsWith("S")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(15 * siop/ d1.k[kkkk]);maso.put(s, elc1);}}}else {siop=0;for (Entry<String, Electric> c1 : d1.map.get(kkkk).entrySet()) {parts8 = c1.getKey();s = parts8;//System.out.println(s);if (s.startsWith("K")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.shuV=0;maso.put(s, elc1);}else if (s.startsWith("H")) {int yy=0;Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);if (elc1.ofopen.startsWith("t")) {siop = 0;}if(elc1.xuhao==2){maso.put(s, elc1);}else if(elc1.xuhao==3){String jkj="";Pattern pattern = Pattern.compile("(.*).");Matcher matcher = pattern.matcher(s);while (matcher.find()) {jkj = String.valueOf(matcher.group(1));}for(int d=0;d<d1.map.size();d++) {for (Entry<String, Electric> c2 : d1.map.get(d).entrySet()) {Electric elc2 = d1.map.get(d).get(jkj+2);if(elc2!=null)yy=1;}}if(yy==0){if(elc1.ofopen.startsWith("t"))elc1.ofopen="closed";elseelc1.ofopen="turned on";maso.put(s, elc1);}}}else if (s.startsWith("B")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);// System.out.println(elc1.shuV);maso.put(s, elc1);zonglux=zonglux+elc1.getL();}else if (s.startsWith("R")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);maso.put(s, elc1);zonglux=zonglux+elc1.getL();}else if (s.startsWith("D")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);//System.out.println(elc1.shuV);maso.put(s, elc1);}else if (s.startsWith("A")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);//System.out.println(elc1.shuV);maso.put(s, elc1);}else if (s.startsWith("S")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);maso.put(s, elc1);}}}}}}}}ArrayList<Electric> arraylist6 = new ArrayList<>();for (Entry<String, Electric> pose : maso.entrySet()) {if(pose.getValue()==null)continue;arraylist6.add(pose.getValue());}//System.out.println("1");Comparator<Electric> numberComparator = new Comparator<Electric>() {public int compare(Electric o1, Electric o2) {int a = o1.fanhui();int b = o2.fanhui();if (a > b)return -1;else if (a == b) {String c = o1.id;String d = o2.id;if (c.compareTo(d)>0)return 1;elsereturn -1;} elsereturn 1;}};Collections.sort(arraylist6, numberComparator);for (Electric suixcs : arraylist6) {if(suixcs.s.equals("S")){suixcs.lux=zonglux;}suixcs.display();}}public static Map<String, Electric> complain(String dkey, String s, Map<String, Electric> map1,int a) {String jkj="";Pattern pattern = Pattern.compile(".(.*)");Matcher matcher = pattern.matcher(dkey);while (matcher.find()) {jkj = String.valueOf(matcher.group(1));}//System.out.println(dkey);//System.out.println(s+"   "+jkj);if (s.startsWith("K")) {Electric tric = new Kaiguan(jkj);tric.resistance = 0;tric.lux=0;map1.put(dkey, tric);}else if (s.startsWith("F")) {Electric tric = new Fendang(jkj);tric.resistance = 0;tric.lux=0;map1.put(dkey, tric);}else if (s.startsWith("L")) {Electric tric = new Lianxu(jkj);tric.resistance = 0;tric.lux=0;map1.put(dkey, tric);}else if (s.startsWith("B")) {Electric tric = new Baichi(jkj);tric.resistance = 10;map1.put(dkey, tric);} else if (s.startsWith("R")) {Electric tric = new Riguang(jkj);tric.resistance = 5;map1.put(dkey, tric);} else if (s.startsWith("D")) {Electric tric = new Diaoshan(jkj);tric.resistance = 20;map1.put(dkey, tric);}else if (s.startsWith("A")) {Electric tric = new Luodi(jkj);tric.resistance = 20;map1.put(dkey, tric);}else if (s.startsWith("M")) {Electric tric = new Bi(jkj);tric.resistance = 0;map1.put(dkey,tric);}else if (s.startsWith("T")) {Electric tric = new Chuan(jkj);tric.resistance = 0;map1.put(dkey,tric);}else if (s.startsWith("H")) {//System.out.println(a);Electric tric = new Huchi(jkj,a);tric.xuhao=a;if(a==2) {tric.resistance = 5;tric.ofopen="closed";}if(a==3){tric.resistance = 10;tric.ofopen="turned on";}map1.put(dkey,tric);}else if (s.startsWith("S")) {Electric tric = new Shoukong(jkj);tric.resistance = 15;tric.xuhao=2;map1.put(dkey,tric);}return map1;}public static Map<String, Electric> compose(String dkey, String s, Map<String, Electric> map1, int m) {//System.out.println(s);String jkj="";Pattern pattern = Pattern.compile(".(.*)");Matcher matcher = pattern.matcher(dkey);while (matcher.find()) {jkj = String.valueOf(matcher.group(1));}if (s.startsWith("H")) {Electric tric = new Huchi(jkj,m);tric.resistance = 0;tric.xuhao=m;if(m==2) {tric.resistance = 5;tric.ofopen="closed";}if(m==3){tric.resistance = 10;tric.ofopen="turned on";}//System.out.println(tric.xuhao);map1.put(dkey+m,tric);}return map1;}
}

总结:

这次作业主要考虑的是互斥开关,重点也是这个,窗帘则没有什么难度,主要考虑互斥开关的两个端点的状态,在输出的时候要输出2的状态,在电路中只有三的时候,要将其转换为2。这次有三分没有拿到,但是在写最后一次题目的时候,突然想起来了,因为精度的问题,改了一个值,导致最后输出的时候有一个地方导致输出结果错误,在最后一次作业中也看到了相应的问题,最后在最后的作业中解决了这一问题。


(2)第八次大作业

点击查看题目
7-1 家居强电电路模拟程序-4
分数 100
作者 蔡轲
单位 南昌航空大学
智能家居是在当下家庭中越来越流行的一种配置方案,它通过物联网技术将家中的各种设备(如音视频设备、照明系统、窗帘控制、空调控制、安防系统、数字影院系统、影音服务器、影柜系统、网络家电等)连接到一起,提供家电控制、照明控制、电话远程控制、室内外遥控、防盗报警、环境监测、暖通控制、红外转发以及可编程定时控制等多种功能和手段。与普通家居相比,智能家居不仅具有传统的居住功能,兼备建筑、网络通信、信息家电、设备自动化,提供全方位的信息交互功能。请根据如下要去设计一个智能家居强电电路模拟系统。以下题目介绍中加粗的部分为本次迭代在“家居强电电路模拟程序-3”的基础上增加的功能要求。1、控制设备
本题模拟的控制设备包括:开关、分档调速器、连续调速器、互斥开关。开关:包括0和1两种状态。开关有两个引脚,任意一个引脚都可以是输入引脚(接往电源端),而另一个则是输出引脚(接网接地端)。开关状态为0时,无论输入电位是多少,输出引脚电位为0。当开关状态为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 图1 互斥开关为避免短路,互斥开关设置了限流电阻,1、2引脚之间默认电阻为5,1、3引脚之间默认电阻为10。分档调速器按档位调整,常见的有3档、4档、5档调速器,档位值从0档-2(3/4)档变化。本次迭代模拟4档调速器,每个档位的输出电位分别为0、0.3、0.6、0.9倍的输入电压。
连续调速器没有固定档位,按位置比例得到档位参数,数值范围在[0.00-1.00]之间,含两位小数。输出电位为档位参数乘以输入电压。
所有调速器都有两个引脚,一个固定的输入(引脚编号为1)、一个输出引脚(引脚编号为2)。当输入电位为0时,输出引脚输出的电位固定为0,不受各类开关调节的影响。开关、调速器的初始状态/档位为0。开关的两个引脚编号为1、2。
除互斥开关外,其他控制设备的电阻为 0。2、受控设备
本题模拟的受控设备包括:灯、风扇。两种设备都有两根引脚,通过两根引脚电压的电压差驱动设备工作。灯有两种工作状态:亮、灭。在亮的状态下,有的灯会因引脚电位差的不同亮度会有区别。
风扇在接电后有两种工作状态:停止、转动。风扇的转速会因引脚间电位差的不同而有区别。
本次迭代模拟两种灯具。白炽灯:亮度在0~200lux(流明)之间。
电位差为0-9V时亮度为0,其他电位差按比例,电位差10V对应50ux,220V对应200lux,其他电位差与对应亮度值成正比。白炽灯超过220V。
日光灯:亮度为180lux。
只有两种状态,电位差为0时,亮度为0,电位差不为0,亮度为180。
本次迭代模拟两种风扇。吊扇:工作电压区间为80V-150V,对应转速区间为80-360转/分钟。80V对应转速为80转/分钟,150V对应转速为360转/分钟,超过150V转速为360转/分钟(本次迭代暂不考虑电压超标的异常情况)。其他电压值与转速成正比,输入输出电位差小于80V时转速为0。
落地扇:工作电压区间为 80V-150V,对应转速区间为 80-360 转/分钟;[80V,100V) 对应转速为 80 转/分钟;[100,120)V 对应转速为 160 转/分钟;[120,140)V 对应转速为 260 转/分钟;大于等于 140V 转速 为 360 转/分钟(本次迭代暂不考虑电压超标的异常情况)。本次迭代模拟一种受控窗帘:受控串联的电路符号为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及以上范围内,窗帘关闭。
窗帘默认为关闭状态。
受控设备电阻:白炽灯的电阻为 10,日光灯的电阻为 5,吊扇的电阻为 20,落地扇的电阻为 20,窗帘电阻为15。3、输入信息
1)输入设备信息分别用设备标识符K、F、L、B、R、D、A、H、S、P分别表示开关、分档调速器、连续调速器、白炽灯、日光灯、吊扇、落地扇、互斥开关、受控窗帘、二极管(见第6部分说明)。设备标识用标识符+编号表示,如K1、F3、L2等。引脚格式:
设备标识-引脚编号,例如:K1-1标识编号为1的开关的1号引脚。
开关、分档调速器、连续调速器的两个引脚编号为1、2。
受控设备的两个引脚编号分别为1、2。
互斥开关的引脚编号已经在互斥开关的介绍部分说明。约束条件:
不同设备的编号可以相同。
设备信息不单独输入,包含在连接信息中。2)输入连接信息一条连接信息占一行,用[]表示一组连接在一起的设备引脚,引脚与引脚之间用英文空格" "分隔。格式:
"["+引脚号+" "+引脚号+"]"
例如:[K1-1 K3-2]表示K1的1号引脚,K3的2号引脚连接在一起。约束条件:
不考虑调速器串联到其他调速器的情况。
考虑各类设备的并联接入。例如,K1 的输出接到 L2 的输入,L2 的输出再接其他设备属于串联接线。K1 的输出接到 L2 的输出,同时 K1 的输入接到 L2 的输入,这种情况属于并联。连接信息不单独输入,包含在线路信息中。3)输入控制设备调节信息开关、互斥开关调节信息格式:#+设备标识K+设备编号,例如:#K2,代表切换K2开关的状态。
#+设备标识H+设备编号,例如:#H2,代表切换H2互斥开关的状态。
分档调速器的调节信息格式:#+设备标识F+设备编号+"+" 代表加一档,例如:#F3+,代表F3输出加一档。
#+设备标识F+设备编号+"-" 代表减一档,例如:#F1-,代表F1输出减一档。
连续调速器的调节信息格式:#+设备标识L+设备编号+":" +数值 代表将连续调速器的档位设置到对应数值,例如:#L3:0.6,代表L3输出档位参数0.6。
4)电源接地标识:VCC,电压220V,GND,电压0V。没有接线的引脚默认接地,电压为0V。5)输入串联电路信息 一条串联电路占一行,串联电路信息由 n 个连接信息组成,连接信息按从靠电源端到接地端顺序依次输入,连接信息之间用英文空格" "分隔。串联电路信息格式:
"#T"+电路编号+":"+连接信息+" "+连接信息+...+" "+连接信息
例如:#T1:[IN K1-1] [K1-2 D2-1] [D2-2 OUT] 一个串联电路的第一个引脚是 IN,代表起始端,靠电源。最后一个引脚是 OUT,代表结尾端, 靠接地。约束条件:
不同的串联电路信息编号不同。
输入的最后一条电路信息必定是总电路信息,总电路信息的起始引脚是 VCC,结束引脚是 GND。
连接信息中的引脚可能是一条串联或并联电路的 IN 或者 OUT。例如:
#T1:[IN K1-1] [K1-2 T2-IN] [T2-OUT OUT]
#T1:[IN K1-1] [K1-2 T2-IN] [T2-OUT M2-IN] [M2-OUT OUT]6)输入并联电路信息 一条并联电路占一行,并联电路由其包含的几条串联电路组成,串联电路标识之间用英文空格" "分隔。格式:"#M"+电路编号+":"+”[”+串联电路信息+" "+....+" "+串联电路信息+”]”
例如:#M1:[T1 T2 T3]
该例声明了一个并联电路,由 T1、T2、T3 三条串联电路并联而成,三条串联电路的 IN 短接在一起构成 M1 的 IN,三条串联电路的 OUT 短接在一起构成 M1 的 OUT。在本题中,并联电路M中的串联电路可以包含别的并联电路。约束条件:本题不考虑输入电压或电压差超过220V的情况。
输入信息以end为结束标志,忽略end之后的输入信息。
本题中的并联信息所包含的串联电路的信息都在并联信息之前输入,不考虑乱序输入的情况。
只要不因短路而造成无穷大的电流烧坏电路(如电路中的部分短接),都是合理情况。
本次迭代考虑多个并联电路串联在一起的情况。
本题考虑一条串联电路中包含其他串联电路和并联电路的情况。例如:
#T3:[VCC K1-1] [K1-2 T2-IN] [T2-OUT K2-1] [K2-2 T1-IN] [T1-OUT GND]
本例中T1\T2两条串联电路是T3的一个部分,本题考虑这种类型的输入。
4、输出信息:
按开关、分档调速器、连续调速器、白炽灯、日光灯、吊扇、互斥开关、受控窗帘、二极管(见第6部分说明)的顺序依次输出所有设备的状态或参数。每个设备一行。同类设备按编号顺序从小到大输出。输出格式:
@设备标识+设备编号+":" +设备参数值(控制开关的档位或状态、灯的亮度、风扇的转速,只输出值,不输出单位)+" "+设备所有引脚的电压(按编号从小到大顺序依次输出,电压的小数部分直接丢弃,保留整数输出,电压之间用”-”分隔)说明:
连续调速器的档位信息保留两位小数,即使小数为0,依然显示两位小数.00。
开关状态为0(打开)时显示turned on,状态为1(合上)时显示closed
如:
@K1:turned on 32-15
@B1:190 68-17
@L1:0.60 220-176
互斥开关按1、2引脚的接通状态显示,1,2接通-1,3断开时显示closed,1,3接通-1,2断开时显示turned on。
如:
@H1:turned on
受控窗帘显示窗帘打开的百分比,如:
@S1:80%5、家居电路模拟系列所有题目的默认规则
1)当计算电压值等数值的过程中,最终结果出现小数时,用截尾规则去掉小数部分,只保留整数部分。为避免精度的误差,所有有可能出现小数的数值用double类型保存并计算,不要作下转型数据类型转换,例如电压、转速、亮度等,只有在最后输出时再把计算结果按截尾规则,舍弃尾数,保留整数输出。2)所有连接信息按电路从靠电源端到靠接地端的顺序依次输入,不会出现错位的情况。VCC/IN一定是第一个连接的第一项,GND/OUT一定是最后一个连接的后一项。3)连接信息如果只包含两个引脚,靠电源端的引脚在前,靠接地端的在后。4)调速器的输入端只会直连VCC,不会接其他设备。整个电路最多只有连接在电源上的一个调速器,且不包含在并联单路中。5)本系列题目中元件的管脚除了互斥开关的1引脚,其他所有引脚在电路中最多只出现一次。6、本题新增内容:
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,二极管导通。7、设计建议
本题包含以下电路图中的所有连接情况:image.png图3 电路示意图1、电路设备类:描述所有电路设备的公共特征。2、受控设备类、控制设备类:对应受控、控制设备3、串联电路类:一条由多个电路设备构成的串联电路,也看成是一个独立的电路设备4、并联电路类:继承电路设备类,也看成是一个独立的电路设备其他类以及类的属性、方法自行设计。image.png图4:建议设计类图输入样例1:
在这里给出一组输入。例如:#T1:[IN P2-2] [P2-1 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]
#T3:[VCC K2-1] [K2-2 M2-IN] [M2-OUT GND]
#K1
#K2
end
输出样例1:
在这里给出相应的输出。例如:@K1:closed 220-220 exceeding current limit error
@K2:closed 220-220 exceeding current limit error
@K3:turned on 220-0
@B1:200 220-0 exceeding current limit error
@D1:0 0-0
@H1:closed 0-0-0
@P2:cutoff 0-0
输入样例2:
在这里给出一组输入。例如:#T1:[IN P2-1] [P2-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]
#T3:[VCC K2-1] [K2-2 M2-IN] [M2-OUT GND]
#K1
#K3
#K2
end
输出样例2:
在这里给出相应的输出。例如:@K1:closed 220-220 exceeding current limit error
@K2:closed 220-220 exceeding current limit error
@K3:closed 220-220 exceeding current limit error
@B1:200 220-0 exceeding current limit error
@D1:0 220-220
@H1:closed 0-220-220 exceeding current limit error
@P2:conduction 220-220 exceeding current limit error
输入样例3:
在这里给出一组输入。例如:#T1:[IN P2-2] [P2-1 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]
#T3:[VCC K2-1] [K2-2 M2-IN] [M2-OUT GND]
#K1
#K3
#K2
end
输出样例3:
在这里给出相应的输出。例如:@K1:closed 220-220 exceeding current limit error
@K2:closed 220-220 exceeding current limit error
@K3:closed 220-220
@B1:200 220-0 exceeding current limit error
@D1:0 220-220
@H1:closed 0-0-220
@P2:cutoff 0-220
输入样例4:
在这里给出一组输入。例如:#T3:[VCC K2-1] [K2-2 GND]
#K2
end
输出样例4:
在这里给出相应的输出。例如:short circuit error


我的代码:

点击查看代码
import java.util.*;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Electric {public String s;public String id;public double shuV = 220;public String ofopen = "turned on";public int speed = 0;public double lin = 0.00;public int resistance;public int lux;public int xuhao;public double current;public double sjc;public double ruV=0;public double chuV=0;public double chuV1=0;public int xh;public String sq=" exceeding current limit error";public Electric(String s, String id) {this.s = s;this.id = id;}public void display() {}public void regulate(String vs) {}public void reshuV(double shuop) {}public void Xia(){if(xuhao==2&&xh!=1){if(ofopen.startsWith("t")){double ch=ruV;ruV=chuV1;chuV1=ch;}else{double ch=ruV;ruV=chuV;chuV=ch;}}else if(xh!=1){double ch=ruV;ruV=chuV;chuV=ch;}}public void scV(int gg,double c1){if (gg == 1) {ruV=0;chuV=0;} else {ruV = c1;chuV = c1;}}public int getL(){return 0;}public int fh() {switch (s) {case "K":return 10;case "F":return 9;case "L":return 8;case "B":return 7;case "R":return 6;case "D":return 5;case "A":return 4;case "H":return 3;case "S":return 2;case "P":return 1;}return 0;}
}
class kg extends Electric {public kg(String id) {super("K", id);}public void display() {Xia();String ss="@K"+id+":"+ofopen+" "+(int)Math.floor(ruV)+"-"+(int)Math.floor(chuV);if(sjc>current)ss=ss+sq;System.out.println(ss);}public void reshuV(double s) {if (ofopen.equals("turned on")) {shuV = 0;chuV = 0;} else if (ofopen.equals("closed")){shuV = s;chuV=shuV;}}
}
class fd extends Electric {public fd(String id) {super("F", id);}public void display() {Xia();String ss="@F"+id+":"+speed+" "+(int)Math.floor(ruV)+"-"+(int)Math.floor(chuV);if(sjc>current)ss=ss+sq;System.out.println(ss);}public void regulate(String vs) {if (vs.equals("+") && speed < 3) {speed++;} else if (vs.equals("-") && speed > 0) {speed--;}}public void reshuV(double s) {shuV = speed * 0.3 * s;}
}
class Lx extends Electric {public Lx(String id) {super("L", id);}public void display() {Xia();String s = String.format("@L%s:%.2f", id, lin);s=s+" "+(int)Math.floor(ruV)+"-"+(int)Math.floor(chuV);if(sjc>current)s=s+sq;System.out.println(s);}public void regulate(String vs) {lin = Double.parseDouble(vs);}public void reshuV(double s) {shuV = lin * s;}
}
class Baichi extends Electric {public Baichi(String id) {super("B", id);}public void display() {Xia();int a = 0,b=(int)Math.floor(shuV);if (b >= 0 && b <= 9) {a = 0;} else if (b >= 10 && b <= 219) {a = (5 * b) / 7 + 43;} else if (b >= 220) {a = 200;}String ss="@B"+id+":"+a+" "+(int)Math.floor(ruV)+"-"+(int)Math.floor(chuV);if(sjc>current)ss=ss+sq;System.out.println(ss);}public void reshuV(double s) {shuV = s;}public int getL(){int c=(int)Math.floor(shuV);int a = 0;if (c >= 0 && c <= 9) {a = 0;} else if (c >= 10 && c <= 219) {a = (5 * c) / 7 + 43;} else if (c == 220) {a = 200;}return a;}
}
class Riguang extends Electric {public Riguang(String id) {super("R", id);}public void display() {Xia();int a;if (shuV == 0)a = 0;elsea = 180;String ss="@R"+id+":"+a+" "+(int)Math.floor(ruV)+"-"+(int)Math.floor(chuV);if(sjc>current)ss=ss+sq;System.out.println(ss);}public void reshuV(double s) {shuV = s;}public int getL(){int a;if (shuV == 0)a = 0;elsea = 180;return a;}
}
class Ds extends Electric {public Ds(String id) {super("D", id);}public void display() {Xia();int ru=(int)Math.floor(ruV);int chu=(int)Math.floor(chuV);int m=(int)Math.floor(shuV);int a = 0;if (m >= 0 && m < 80)a = 0;else if (m >= 80 && m <= 150)a = (m - 80) * 4 + 80;else if (m > 150)a = 360;String ss="@D"+id+":"+a+" "+ru+"-"+chu;if(sjc>current)ss=ss+sq;System.out.println(ss);}public void reshuV(double v) {shuV = v;}
}
class Luodi extends Electric {public Luodi(String id) {super("A", id);}public void display() {Xia();int a = 0;if (shuV >= 0 && shuV < 80)a = 0;else if (shuV >= 80 && shuV <= 99)a = 80;else if (shuV >= 100 && shuV <= 119)a = 160;else if (shuV >= 120 && shuV <= 139)a = 260;else if (shuV > 140)a = 360;String ss="@A"+id+":"+a+" "+(int)Math.floor(ruV)+"-"+(int)Math.floor(chuV);if(sjc>current)ss=ss+sq;System.out.println(ss);}public void reshuV(double w) {shuV = w;}
}
class Huchi extends Electric{public Huchi(String id,int d){super("H", id);this.xuhao=d;}public void display() {String ss="@H"+id+":"+ofopen+" "+(int)Math.floor(ruV)+"-"+(int)Math.floor(chuV)+"-"+(int)Math.floor(chuV1);if(sjc>current)ss=ss+sq;System.out.println(ss);}public void reshuV(double v) {if (ofopen.equals("turned on")) {shuV = 0;} else if (ofopen.equals("closed"))shuV = v;}
}class Shoukong extends Electric{//R=15public Shoukong(String id) {super("S", id);}public void display() {Xia();int ru=(int)Math.floor(ruV);int chu=(int)Math.floor(chuV);String a = "100%";if(shuV>=50){if (lux >= 0 && lux < 50)a = "100%";else if (lux >= 50 && lux < 100)a =  "80%";else if (lux >= 100 && lux < 200)a = "60%";else if (lux >= 200 && lux < 300)a = "40%";else if (lux >= 300 && lux <400)a = "20%";else if (lux >=400)a = "0%";}String ss="@S"+id+":"+a+" "+ru+"-"+chu;if(sjc>current)ss=ss+sq;System.out.println(ss);}public void reshuV(double s) {shuV = s;}
}class Erjiguan extends Electric{public Erjiguan(String s){super("P",s);}public void display() {Xia();String ss="@P"+id+":"+ofopen+" "+(int)Math.floor(ruV)+"-"+(int)Math.floor(chuV);if(sjc>current)ss=ss+sq;System.out.println(ss);}public void reshuV(double c){shuV = c;}
}
class Bi extends Electric {public Bi(String ml) {super("M", ml);}
}
class Chuan extends Electric{public Chuan(String ml){super("T",ml);}
}
class Duobing{public String s;public ArrayList<Map<String, Electric>> map;public double[] k;public double a;public Duobing(String s, ArrayList<Map<String, Electric>> map, double[] b,double a){this.s=s;this.map=map;this.k=b;this.a=a;}
}
class Fanhui{public Map<String, Electric> map;public double zl;public double sV;public Fanhui(Map<String, Electric> map,double zl,double sv){this.map=map;this.zl=zl;this.sV=sv;}
}
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);String s = "", pop = "", chuanxu = "", bingxu = "";int i;ArrayList<String> connection = new ArrayList<>();ArrayList<String> connection1 = new ArrayList<>();ArrayList<String> chw = new ArrayList<>();while (true) {s = in.nextLine().trim();if ("end".equals(s))break;if (s.startsWith("#T")){Pattern pattern = Pattern.compile("#(.*):(.*)");Matcher matcher = pattern.matcher(s);while (matcher.find()) {chuanxu = matcher.group(1);pop = matcher.group(2);}connection.add(chuanxu + ":" + pop);}else if (s.startsWith("#M")){Pattern pattern = Pattern.compile("#(.*):(.*)");Matcher matcher = pattern.matcher(s);while (matcher.find()) {bingxu = matcher.group(1);pop = matcher.group(2);}connection1.add(bingxu + " " + pop);}else if (s.startsWith("#K")){Pattern pattern = Pattern.compile("#(.*)");Matcher matcher = pattern.matcher(s);while (matcher.find()) {pop = matcher.group(1);}chw.add(pop);}else if (s.startsWith("#F")) {Pattern pattern = Pattern.compile("#(.*)");Matcher matcher = pattern.matcher(s);while (matcher.find()) {pop = matcher.group(1);}chw.add(pop);}else if (s.startsWith("#L")) {Pattern pattern = Pattern.compile("#(.*)");Matcher matcher = pattern.matcher(s);while (matcher.find()) {pop = matcher.group(1);}chw.add(pop);}else if(s.startsWith("#H")){Pattern pattern = Pattern.compile("#(.*)");Matcher matcher = pattern.matcher(s);while (matcher.find()) {pop = matcher.group(1);}chw.add(pop);}}int kllk = 0,mmm=0;String z1 = "", zm = "",bnb="";Map<String, Map<String, Electric>> mac = new HashMap<>();Map<String, Electric> zhu = new LinkedHashMap<>();for (mmm = 0; mmm < connection.size(); mmm++) {int vb1 = 0, vb2 = 0;Map<String, Electric> map1 = new LinkedHashMap<>();z1 = connection.get(mmm);Pattern pattern = Pattern.compile("(.*):(.*)");Matcher matcher = pattern.matcher(z1);while (matcher.find()) {zm = matcher.group(1);pop = matcher.group(2);}String[] partsl = pop.split("]");String jk="",jk1="";for (kllk = 0; kllk < partsl.length; kllk++) {jk1 = partsl[0].trim();jk = partsl[kllk].trim();if (jk1.startsWith("[IN")) {vb1 = 1;String[] parts4 = jk.split(" ");if(parts4[1].equals("OUT")){if(parts4[0].startsWith("[H")) {String[] pinyin = parts4[0].split("-");String dkey="";pattern = Pattern.compile("\\[(.*)");matcher = pattern.matcher(pinyin[0]);while (matcher.find()) {dkey = matcher.group(1);}if (dkey.startsWith("H")) {int m1 = Integer.parseInt(pinyin[1]);if ((m1 == 2 || m1 == 3) && parts4[0] != null) {bnb = parts4[0].substring(1, 3);map1 = compose(dkey, bnb, map1, m1,1);}}break;}else {break;}}if(parts4[0].startsWith("[H")){String[] pinyin = parts4[0].split("-");String dkey="";pattern = Pattern.compile("\\[(.*)");matcher = pattern.matcher(pinyin[0]);while (matcher.find()) {dkey = matcher.group(1);}int m1=Integer.parseInt(pinyin[1]);if((m1==2||m1==3)&&parts4[0]!=null){bnb=parts4[0].substring(1,3);map1 = compose(dkey, bnb, map1,m1,1);}String[] pinyin1 = parts4[1].split("-");dkey = pinyin1[0].trim();if(dkey.startsWith("H")){m1=Integer.parseInt(pinyin1[1]);if(m1==2||m1==3){map1 = compose(dkey, parts4[1], map1,m1,2);}}else{m1=Integer.parseInt(pinyin1[1]);map1 = complain(dkey, parts4[1], map1,m1,m1);}}else {String[] pinyin = parts4[1].split("-");String dkey = pinyin[0].trim();if(dkey.startsWith("H")){int m1=Integer.parseInt(pinyin[1]);if(m1==2||m1==3){map1 = compose(dkey, parts4[1], map1,m1,2);}}else{if(!pinyin[1].equals("IN")){int m1=Integer.parseInt(pinyin[1]);map1 = complain(dkey, parts4[1], map1,m1,m1);}else {map1 = complain(dkey, parts4[1], map1,1,1);}}}}else if (jk1.startsWith("[VCC")) {vb2 = 1;String[] parts4 = jk.split(" ");if(parts4[1].equals("GND")){if(parts4[0].startsWith("[H")) {String[] pinyin = parts4[0].split("-");String dkey="";pattern = Pattern.compile("\\[(.*)");matcher = pattern.matcher(pinyin[0].trim());while (matcher.find()) {dkey = matcher.group(1);}int m1 = Integer.parseInt(pinyin[1]);if ((m1 == 2 || m1 == 3) && parts4[0] != null) {bnb = parts4[0].substring(1, 3);map1 = compose(dkey, bnb, map1, m1,1);}break;}else {break;}}if(parts4[0].startsWith("[H")){String[] pinyin = parts4[0].split("-");String dkey="";pattern = Pattern.compile("\\[(.*)");matcher = pattern.matcher(pinyin[0].trim());while (matcher.find()) {dkey = matcher.group(1);}int m1=Integer.parseInt(pinyin[1]);if((m1==2||m1==3)&&parts4[0]!=null){bnb=parts4[0].substring(1,3);map1 = compose(dkey, bnb, map1,m1,1);}String[] pinyin1 = parts4[1].split("-");dkey = pinyin1[0].trim();m1=Integer.parseInt(pinyin1[1]);if(dkey.startsWith("H")){if(m1==2||m1==3){map1 = compose(dkey, parts4[1], map1,m1,2);}}else{map1 = complain(dkey, parts4[1], map1,m1,m1);}}else {String[] pinyin = parts4[1].split("-");String dkey = pinyin[0].trim();if(dkey.startsWith("H")){int m1=Integer.parseInt(pinyin[1]);if(m1==2||m1==3){map1 = compose(dkey, parts4[1], map1,m1,2);}}else{if(!pinyin[1].equals("IN")){int m1=Integer.parseInt(pinyin[1]);map1 = complain(dkey, parts4[1], map1,m1,m1);}else {map1 = complain(dkey, parts4[1], map1,1,1);}}}}}if (vb1 == 1){mac.put(zm, map1);}if (vb2 == 1) {zhu = map1;}}int flag = 0;double rui = 220;double rui1=rui;for (i = 0; i < chw.size(); i++) {String sid = chw.get(i);for (Entry<String, Map<String, Electric>> entry : mac.entrySet()){if (sid.startsWith("K")) {String diu = sid.trim();Electric electric = entry.getValue().get(diu);if (electric != null) {if (electric.ofopen.startsWith("t"))electric.ofopen = "closed";elseelectric.ofopen = "turned on";break;}}else if (sid.startsWith("F")) {String diu="",vs="";Pattern pattern = Pattern.compile("(.*)(.)");Matcher matcher = pattern.matcher(sid);while (matcher.find()) {diu = matcher.group(1);vs = matcher.group(2);}Electric electric = entry.getValue().get(diu);if (electric != null) {electric.regulate(vs);if (vs.equals("+")) {flag++;if (flag >= 3) {flag = 3;}}if (vs.equals("-")) {flag--;if (flag <= 0) {flag = 0;}}break;}}else if (sid.startsWith("L")) {String diu = sid.substring(0, 2);String vs = sid.substring(3);Electric electric = entry.getValue().get(diu);if (electric != null) {electric.regulate(vs);break;}}else if(sid.startsWith("H")){String diu = sid.trim();int n1=0,n2=0;for (Entry<String, Map<String, Electric>> try1 : mac.entrySet()){Electric electric = try1.getValue().get(diu+2);if (electric != null) {n1=1;if (electric.ofopen.startsWith("t"))electric.ofopen = "closed";elseelectric.ofopen = "turned on";break;}}for (Entry<String, Map<String, Electric>> try1 : mac.entrySet()){Electric electric1 = try1.getValue().get(diu+3);if (electric1 != null) {n2=1;if (electric1.ofopen.startsWith("t"))electric1.ofopen = "closed";elseelectric1.ofopen = "turned on";break;}}if(n1==1||n2==1)break;}}for (Entry<String, Electric> ignored1 : zhu.entrySet()) {if (sid.startsWith("K")) {String diu = sid.trim();Electric electric = zhu.get(diu);if (electric != null) {if (electric.ofopen.startsWith("t"))electric.ofopen = "closed";elseelectric.ofopen = "turned on";break;}}else if (sid.startsWith("H")) {String diu = sid.trim();int n1=0,n2=0;for (Entry<String, Electric> ignored : zhu.entrySet()){Electric electric = zhu.get(diu+2);if (electric != null) {n1=1;if (electric.ofopen.startsWith("t"))electric.ofopen = "closed";elseelectric.ofopen = "turned on";break;}}for (Entry<String, Electric> ignored : zhu.entrySet()){Electric electric1 = zhu.get(diu+3);if (electric1 != null) {n2=1;if (electric1.ofopen.startsWith("t"))electric1.ofopen = "closed";elseelectric1.ofopen = "turned on";break;}}if(n1==1||n2==1)break;}else if (sid.startsWith("F")) {String diu="",vs="";Pattern pattern = Pattern.compile("(.*)(.)");Matcher matcher = pattern.matcher(sid);while (matcher.find()) {diu = matcher.group(1);vs = matcher.group(2);}Electric electric = zhu.get(diu);if (electric != null) {electric.regulate(vs);break;}}else if (sid.startsWith("L")) {String diu = sid.substring(0, 2);String vs = sid.substring(3);Electric electric = zhu.get(diu);if (electric != null) {electric.regulate(vs);break;}}}}Map<String,ArrayList<Map<String, Electric>>> vjk=new LinkedHashMap<>();Map<String, Map<String, Electric>> maps = new HashMap<>();for (mmm = 0; mmm < connection1.size(); mmm++) {String k11 = connection1.get(mmm).substring(0, 2);Pattern pattern = Pattern.compile("(.*)\\s\\[(.*)]");Matcher matcher = pattern.matcher(connection1.get(mmm));while (matcher.find()) {pop =matcher.group(2);}String[] pa = pop.split(" ");ArrayList<Map<String, Electric>> uzi=new ArrayList<>();for (int yq = 0; yq < pa.length; yq++) {for (Entry<String, Map<String, Electric>> entry1 : mac.entrySet()) {if (entry1.getKey().equals(pa[yq])) {maps.put(k11 + yq, entry1.getValue());uzi.add(entry1.getValue());}}vjk.put(k11,uzi);}}double[] b = new double[1];int sum1,sum2=0,sum3,s1,mv=0,mv1=0,zonglux,cw,cw1=0,index4=0,ind=0,index5=0;double cR, bingR=0;ArrayList<Duobing> db=new ArrayList<>();for(Entry<String, Electric> fd:zhu.entrySet()) {for (Entry<String, ArrayList<Map<String, Electric>>> entry : vjk.entrySet()) {if (fd.getKey().equals(entry.getKey())) {ind++;}}}double[] a = new double[ind];for(Entry<String, Electric> fd:zhu.entrySet()){for(Entry<String,ArrayList<Map<String, Electric>>> entry : vjk.entrySet()) {if(fd.getKey().equals(entry.getKey())){double[] c= new double[entry.getValue().size()];i = 0;int cw2=0;for (sum1 = 0; sum1 < entry.getValue().size(); sum1++) {c[i]=0;int hjh = 0;for (Entry<String, Electric> entry1 : entry.getValue().get(sum1).entrySet()) {flag = 0;if (entry1.getKey().startsWith("K")) {if (entry1.getValue().ofopen.startsWith("t"))flag = 1;elsehjh++;}if (entry1.getKey().startsWith("H")) {if (entry1.getValue().ofopen.startsWith("t"))flag = 1;elsehjh++;}if (entry1.getKey().startsWith("P")) {if (entry1.getValue().ofopen.equals("cutoff"))flag = 1;elsehjh++;}if(entry1.getKey().startsWith("T")){cw=0;for(Entry<String, Map<String, Electric>> en6 : mac.entrySet()) {if (en6.getKey().equals(entry1.getKey())) {for(Entry<String, Electric> e : en6.getValue().entrySet()){cw++;if (e.getKey().startsWith("K")) {if (e.getValue().ofopen.startsWith("t"))flag = 1;elsehjh++;}if (e.getKey().startsWith("H")) {if (e.getValue().ofopen.startsWith("t"))flag = 1;elsehjh++;}if (e.getKey().startsWith("P")) {if (e.getValue().ofopen.equals("cutoff"))flag = 1;elsehjh++;}c[i] = c[i] + 1.0 * e.getValue().resistance;}cw1=cw+cw1;}}}if(entry1.getKey().startsWith("M")){double thisR = 0;ArrayList<Map<String, Electric>> acm=vjk.get(entry1.getKey());double[] qq= new double[acm.size()];int ii = 0;for (Map<String, Electric> stringElectricMap : acm) {qq[ii]=0;for (Entry<String, Electric> ent : stringElectricMap.entrySet()) {int hjh1 = 0;int indflag = 0;if (ent.getKey().startsWith("K")) {if (ent.getValue().ofopen.startsWith("t"))indflag = 1;elsehjh1++;}if (ent.getKey().startsWith("H")) {if (ent.getValue().ofopen.equals("turned on"))indflag = 1;elsehjh1++;}if (ent.getKey().startsWith("P")) {if (ent.getValue().ofopen.equals("cutoff"))indflag = 1;elsehjh1++;}if(entry1.getKey().startsWith("T")){cw=0;for(Entry<String, Map<String, Electric>> en6 : mac.entrySet()) {if (en6.getKey().equals(entry1.getKey())) {for(Entry<String, Electric> e : en6.getValue().entrySet()){cw++;if (e.getKey().startsWith("K")) {if (e.getValue().ofopen.startsWith("t"))indflag = 1;elsehjh1++;}if (e.getKey().startsWith("H")) {if (e.getValue().ofopen.startsWith("t"))indflag = 1;elsehjh1++;}if (e.getKey().startsWith("P")) {if (e.getValue().ofopen.equals("cutoff"))indflag = 1;elsehjh1++;}qq[ii] =qq[ii] + 1.0 * e.getValue().resistance;}cw2=cw+cw2;}}}if (hjh1 == stringElectricMap.size()+cw2) {qq[ii] = 0;break;}if (indflag == 1){qq[ii] = -1;break;}else if(indflag==0) {qq[ii] = qq[ii] + 1.0 * ent.getValue().resistance;}}ii++;}int ss=0;int ss1=0;for (double v : qq) {for(double csd:qq){if (csd == -1) {ss1 = 1;break;}}if (v == 0&&ss1==0) {index5 = 1;thisR = 0;break;} else {if (v == -1) {ss++;if (ss == qq.length)mv1 = 1;} elsethisR = 1.0 / v + thisR;}}if(mv1==1){c[i]=-2;}else c[i]=c[i]+1.0/thisR;db.add(new Duobing(entry1.getKey(), acm,qq,thisR));}if (hjh ==entry.getValue().get(sum1).size()+cw1) {c[i] = 0;}if (flag == 1)c[i] = -1;elsec[i] = c[i] + 1.0 * entry1.getValue().resistance;}i++;}s1=0;int sasa=0;for (i = 0; i < c.length; i++) {//System.out.println(c[i]);for(double scs:c){if(scs==-1){sasa=1;break;}}if (c[i] == 0&&sasa==0) {index4=0;a[sum2] = 0;break;}else if(c[i] == 0&&sasa!=0)a[sum2]=0;else {if (c[i] == -1||c[i]==-2){s1++;if(s1==c.length){mv=1;}}elsea[sum2] = 1.0 / c[i] + a[sum2];}}db.add(new Duobing(entry.getKey(), entry.getValue(), c,a[sum2]));sum2++;}}}for(sum3=0;sum3<a.length;sum3++){if (a[sum3] != 0) {bingR = bingR+1.0/a[sum3];}}b[0]=0;double[] l =new double[1];int flag4 = 0;int index1=0,index2=0;for (Entry<String, Electric> entry : zhu.entrySet()) {index2++;flag=0;if (entry.getKey().startsWith("K")) {flag=0;if (entry.getValue().ofopen.startsWith("t")){flag = 1;}else {index1++;}if(flag==1){b[0] = -1;break;}}else if (entry.getKey().startsWith("H")) {flag=0;if (entry.getValue().ofopen.startsWith("t")){flag = 1;}else{index1++;}if(flag==1){b[0] = -1;break;}}else if (entry.getKey().startsWith("P")) {flag=0;if (entry.getValue().ofopen.startsWith("cut")){flag = 1;}elseindex1++;if(flag==1){b[0] = -1;break;}}else if(entry.getKey().startsWith("T")){l[0]=0;index2--;for(Entry<String, Map<String, Electric>> entry6 : mac.entrySet()) {index2++;if(entry6.getKey().equals(entry.getKey())) {for(Entry<String, Electric> en : entry6.getValue().entrySet()) {if (en.getKey().startsWith("K")) {flag4=0;if (en.getValue().ofopen.startsWith("t")) {flag4 = 1;}else{index1++;}if (flag4 == 1) {l[0] = -1;break;}}else if(en.getKey().startsWith("H")){flag4=0;if (en.getValue().ofopen.startsWith("t")) {flag4 = 1;}else{index1++;}if (flag4 == 1) {l[0] = -1;break;}elsel[0]=l[0]+en.getValue().resistance;}else if(en.getKey().startsWith("P")){flag4=0;if (entry.getValue().ofopen.startsWith("cut")){flag4 = 1;}elseindex1++;if(flag4==1){b[0] = -1;break;}elsel[0]=l[0]+en.getValue().resistance;}elsel[0]=l[0]+en.getValue().resistance;}break;}}if(l[0]==-1){b[0]=-1;break;}else{b[0]=b[0]+l[0];}}b[0] = b[0] + entry.getValue().resistance;}cR = b[0];double chuanV, bingV;double chuanliu=0;int index=0;chuanV = rui * cR / (bingR + cR);bingV = rui * bingR / (bingR + cR);chuanliu=rui/(bingR + cR);zonglux=0;Map<String, Electric> maso = new HashMap<>();for (Entry<String, Electric> entry : zhu.entrySet()) {String parts8 = entry.getKey();s = parts8;if(index2==index1||index4==1||index5==1||(b[0]==0&&bingR==0)){index=1;}if(b[0]==-1||flag4==1||flag==1||mv==1){rui=0;chuanV=0;bingV=0;chuanliu=0;}if (s.startsWith("K")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(rui);rui = elc1.shuV;chuanV = 1.0*rui * cR / (bingR + cR);bingV = 1.0*rui * bingR / (bingR + cR);chuanliu = rui / (cR+bingR);elc1.ruV=rui1;if(elc1.ofopen.startsWith("t")){elc1.chuV=0;chuanliu=0;rui1=0;}elseelc1.chuV=rui1;elc1.sjc=chuanliu;maso.put(s, elc1);}else if (s.startsWith("H")) {Electric elc1 = zhu.get(parts8);if(elc1.xuhao ==3){if(elc1.ofopen.startsWith("t")){elc1.ofopen="closed";elc1.ruV=0;rui1=0;chuanliu=0;}else{elc1.ruV=rui1;elc1.ofopen="turned on";}elc1.chuV=0;elc1.chuV1=rui1-10*chuanV/cR;rui1=elc1.chuV1;}else{if(elc1.ofopen.startsWith("t")){elc1.ruV=0;rui1=0;chuanliu=0;}else{elc1.ruV=rui1;}elc1.chuV=rui1-5*chuanV/cR;elc1.chuV1=0;rui1=elc1.chuV;}elc1.sjc=chuanliu;maso.put(s, elc1);}else if (s.startsWith("B")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(10*chuanV/cR);zonglux=zonglux+elc1.getL();elc1.ruV=rui1;elc1.chuV=rui1-10*chuanV/cR;rui1=elc1.chuV;elc1.sjc=chuanliu;maso.put(s, elc1);}else if (s.startsWith("R")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(5*chuanV/cR);elc1.sjc=chuanliu;elc1.ruV=rui1;elc1.chuV=rui1-5*chuanV/cR;rui1=elc1.chuV;maso.put(s, elc1);zonglux=zonglux+elc1.getL();}else if (s.startsWith("D")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(20*chuanV/cR);elc1.ruV=rui1;elc1.chuV=rui1-20*chuanV/cR;rui1=elc1.chuV;elc1.sjc=chuanliu;maso.put(s, elc1);}else if (s.startsWith("A")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(20*chuanV/cR);elc1.ruV=rui1;elc1.chuV=rui1-20*chuanV/cR;rui1=elc1.chuV;elc1.sjc=chuanliu;maso.put(s, elc1);}else if (s.startsWith("L")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(rui);rui = elc1.shuV;chuanV = rui * cR / (bingR + cR);bingV = rui * bingR / (bingR + cR);chuanliu = rui / (cR+bingR);elc1.sjc=chuanliu;elc1.ruV=rui1;elc1.chuV=rui1;maso.put(s, elc1);}else if (s.startsWith("F")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(rui);rui=elc1.shuV;chuanV = rui * cR / (bingR + cR);bingV = rui * bingR / (bingR + cR);chuanliu = rui / (cR+bingR);elc1.ruV=rui1;elc1.chuV=rui1;elc1.sjc=chuanliu;maso.put(s, elc1);}else if (s.startsWith("S")) {Electric elc1 = zhu.get(parts8);elc1.reshuV(15*chuanV/cR);elc1.sjc=chuanliu;elc1.ruV=rui1;elc1.chuV=rui1-15*chuanV/cR;rui1=elc1.chuV;maso.put(s, elc1);}else if (s.startsWith("P")) {Electric elc1 = zhu.get(parts8);if(elc1.ofopen.startsWith("cut")){elc1.chuV=0;chuanliu=0;rui1=0;}elseelc1.chuV=rui1;elc1.sjc=chuanliu;elc1.ruV=rui1;maso.put(s, elc1);}else if(s.startsWith("T")) {for(Entry<String, Map<String, Electric>> entry6 : mac.entrySet()) {if(entry6.getKey().equals(s)){for(Entry<String,Electric> jk : entry6.getValue().entrySet()) {s=jk.getKey();if (s.startsWith("K")) {Electric elc1 = entry6.getValue().get(s);elc1.reshuV(rui);rui = elc1.shuV;chuanV = 1.0*rui * cR / (bingR + cR);bingV = 1.0*rui * bingR / (bingR + cR);chuanliu = rui / (cR+bingR);elc1.ruV=rui1;if(elc1.ofopen.startsWith("t")){elc1.chuV=0;chuanliu=0;rui1=0;}elseelc1.chuV=rui1;elc1.sjc=chuanliu;maso.put(s, elc1);maso.put(s, elc1);} else if(s.startsWith("H")) {Electric elc1 = entry6.getValue().get(s);if(elc1.xuhao ==3){if(elc1.ofopen.startsWith("t")){chuanliu=0;elc1.ofopen="closed";}else{elc1.ofopen="turned on";}elc1.ruV=rui1;elc1.chuV=0;elc1.chuV1=rui1-10*chuanV/cR;rui1=elc1.chuV1;} else{if(elc1.ofopen.startsWith("t")){chuanliu=0;}elc1.ruV=rui1;elc1.chuV=rui1-5*chuanV/cR;elc1.chuV1=0;rui1=elc1.chuV;}elc1.sjc=chuanliu;maso.put(s, elc1);} else if (s.startsWith("B")) {Electric elc1 = entry6.getValue().get(s);elc1.reshuV(10 * chuanV / cR);elc1.sjc=chuanliu;elc1.ruV=rui1;elc1.chuV=rui1-10*chuanV/cR;rui1=elc1.chuV;maso.put(s, elc1);zonglux=zonglux+elc1.getL();} else if (s.startsWith("R")) {Electric elc1 = entry6.getValue().get(s);elc1.reshuV(5 * chuanV / cR);elc1.sjc=chuanliu;elc1.ruV=rui1;elc1.chuV=rui1-5*chuanV/cR;rui1=elc1.chuV;maso.put(s, elc1);zonglux=zonglux+elc1.getL();} else if (s.startsWith("D")) {Electric elc1 = entry6.getValue().get(s);elc1.reshuV(20 * chuanV / cR);elc1.sjc=chuanliu;elc1.ruV=rui1;elc1.chuV=rui1-20*chuanV/cR;rui1=elc1.chuV;maso.put(s, elc1);} else if (s.startsWith("A")) {Electric elc1 = entry6.getValue().get(s);elc1.reshuV(20 * chuanV / cR);elc1.sjc=chuanliu;elc1.ruV=rui1;elc1.chuV=rui1-20*chuanV/cR;rui1=elc1.chuV;maso.put(s, elc1);} else if (s.startsWith("S")) {Electric elc1 = entry6.getValue().get(s);elc1.reshuV(15 * chuanV / cR);elc1.sjc=chuanliu;elc1.ruV=rui1;elc1.chuV=rui1-15*chuanV/cR;rui1=elc1.chuV;maso.put(s, elc1);}else if(s.startsWith("P")){Electric elc1=entry6.getValue().get(s);if(elc1.ofopen.startsWith("cut")){elc1.chuV=0;chuanliu=0;rui1=0;}elseelc1.chuV=rui1;elc1.sjc=chuanliu;elc1.ruV=rui1;maso.put(s, elc1);}}}}}else if (s.startsWith("M")) {Fanhui fanhui=search(s,maso, db,bingV,bingR,zonglux, rui1);maso=fanhui.map;zonglux= (int) fanhui.zl;for (Duobing duobing : db) {if (duobing == null) continue;if (duobing.s.equals(s)) {if(duobing.a!=0)rui1 = rui1 - bingV * (1.0 / duobing.a) / bingR;}}}}if(index==1){System.out.println("short circuit error");}else{ArrayList<Electric> arraylist6 = new ArrayList<>();for (Entry<String, Electric> pose : maso.entrySet()) {if(pose.getValue()==null)continue;arraylist6.add(pose.getValue());}Comparator<Electric> numberComparator = (o1, o2) -> {int a1 = o1.fh();int b1 = o2.fh();if (a1 > b1)return -1;else if (a1 == b1) {String c = o1.id;String d = o2.id;if (c.compareTo(d)>0)return 1;elsereturn -1;} elsereturn 1;};arraylist6.sort(numberComparator);for (Electric ss : arraylist6) {if(ss.s.equals("S")){ss.lux=zonglux;}if(ss.chuV<0)ss.chuV=0;if(ss.chuV1<0)ss.chuV1=0;if(ss.ruV<=0)ss.ruV=0;if(ss.chuV>=220)ss.chuV=220;if(ss.chuV1>=220)ss.chuV1=220;if(ss.ruV<=0)ss.ruV=0;ss.display();}}}public static Map<String, Electric> complain(String d, String s, Map<String, Electric> map1,int a,int b) {String k="";Pattern pattern = Pattern.compile(".(.*)");Matcher matcher = pattern.matcher(d);while (matcher.find()) {k = matcher.group(1);}if (s.startsWith("K")) {Electric t = new kg(k);t.resistance = 0;t.lux=0;t.current=20;t.xh=b;map1.put(d, t);} else if (s.startsWith("F")) {Electric t = new fd(k);t.resistance = 0;t.lux=0;t.current=18;t.xh=b;map1.put(d, t);} else if (s.startsWith("L")) {Electric t = new Lx(k);t.resistance = 0;t.lux=0;t.current=18;t.xh=b;map1.put(d, t);} else if (s.startsWith("B")) {Electric t = new Baichi(k);t.resistance = 10;t.current=9;t.xh=b;map1.put(d, t);} else if (s.startsWith("R")) {Electric t = new Riguang(k);t.resistance = 5;t.current=5;t.xh=b;map1.put(d, t);} else if (s.startsWith("D")) {Electric t = new Ds(k);t.resistance = 20;t.current=12;t.xh=b;map1.put(d, t);} else if (s.startsWith("A")) {Electric t = new Luodi(k);t.resistance = 20;t.current=14;t.xh=b;map1.put(d, t);} else if (s.startsWith("M")) {Electric t1 = new Bi(k);t1.resistance = 0;t1.current=0;map1.put(d,t1);} else if (s.startsWith("T")) {Electric t = new Chuan(k);t.resistance = 0;t.current=0;map1.put(d,t);} else if (s.startsWith("H")) {Electric t = new Huchi(k,a);t.xuhao=a;if(a==2) {t.resistance = 5;t.ofopen="closed";}if(a==3){t.resistance = 10;t.ofopen="turned on";}t.xh=b;t.current=20;map1.put(d,t);} else if (s.startsWith("S")) {Electric t = new Shoukong(k);t.resistance = 15;t.xuhao=2;t.current=12;t.xh=b;map1.put(d,t);} else if (s.startsWith("P")) {Electric t = new Erjiguan(k);t.resistance = 0;t.xuhao=2;t.current=8;if(a==1){t.ofopen="conduction";}else if(a==2){t.ofopen="cutoff";}t.xh=b;map1.put(d,t);}return map1;}public static Map<String, Electric> compose(String dkey, String s, Map<String, Electric> map1, int m,int n) {String jkj="";Pattern pattern = Pattern.compile(".(.*)");Matcher matcher = pattern.matcher(dkey);while (matcher.find()) {jkj = matcher.group(1);}if (s.startsWith("H")) {Electric t = new Huchi(jkj,m);t.current=20;t.xuhao=m;if(m==2) {t.resistance = 5;t.ofopen="closed";}if(m==3){t.resistance = 10;t.ofopen="turned on";}t.xh=n;map1.put(dkey+m,t);}return map1;}public static Fanhui search(String s, Map<String, Electric> maso, ArrayList<Duobing> ddb, double bingV, double bingR, double zonglux, double rui1) {double m1;Duobing d1;for (int cmd = 0; cmd < ddb.size(); cmd++) {if (ddb.get(cmd) == null) continue;m1=rui1;d1 = ddb.get(cmd);if (d1.s.equals(s)) {for (int kkkk = 0; kkkk < d1.map.size(); kkkk++) {double cw;int gg=0;if (d1.map.get(kkkk) == null) continue;double siop = bingV * (1.0 / d1.a) / bingR;String parts8;int yy=0;double mm=m1;//System.out.println(rui1);if ((d1.k[kkkk] != -1 && d1.k[kkkk] != 0)||d1.k[kkkk]==-2) {for (Entry<String, Electric> c1 : d1.map.get(kkkk).entrySet()) {rui1 = mm;parts8 = c1.getKey();s = parts8;//System.out.println(s);if (s.startsWith("K")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);elc1.ruV = mm;if(elc1.ofopen.startsWith("t")){siop =0;mm=0;elc1.chuV = 0;}elseelc1.chuV = mm;elc1.sjc = siop / d1.k[kkkk];maso.put(s, elc1);} else if (s.startsWith("H")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);if (elc1.xuhao == 3) {yy = 1;String jkj = "";Pattern pattern = Pattern.compile("(.*).");Matcher matcher = pattern.matcher(s);while (matcher.find()) {jkj = matcher.group(1);}for (int d = 0; d < d1.map.size(); d++) {for (Entry<String, Electric> ignored : d1.map.get(d).entrySet()) {Electric elc2 = d1.map.get(d).get(jkj + 2);if (elc2 != null){yy = 2;if (elc1.ofopen.startsWith("t")){elc1.ofopen = "closed";}else{elc1.ofopen = "turned on";}elc1.chuV1=mm;mm=mm-10*siop/d1.k[kkkk];maso.put(s, elc1);break;}}}if (yy == 1) {if (elc1.ofopen.startsWith("t"))elc1.ofopen = "closed";elseelc1.ofopen="turned on";elc1.ruV = mm - 10 * siop / d1.k[kkkk];elc1.chuV = 0;elc1.chuV1 = mm;mm = mm - 10 * siop / d1.k[kkkk];elc1.sjc = siop / d1.k[kkkk];maso.put(s, elc1);}}else{elc1.chuV = mm;if(elc1.ofopen.startsWith("t")){elc1.ruV = 0;}else{elc1.ruV=mm;mm = mm - 5 * siop / d1.k[kkkk];}elc1.sjc = siop / d1.k[kkkk];String jkj = "";Pattern pattern = Pattern.compile("(.*).");Matcher matcher = pattern.matcher(s);while (matcher.find()) {jkj = matcher.group(1);}for (int d = 0; d < d1.map.size(); d++) {for (Entry<String, Electric> ignored : d1.map.get(d).entrySet()) {Electric e = d1.map.get(d).get(jkj + 3);if (e != null){yy = 2;e.sjc =  elc1.sjc;e.chuV=elc1.chuV;}}}if(yy!=2){elc1.chuV1=0;maso.put(s, elc1);}}} else if (s.startsWith("B")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(10 * siop / d1.k[kkkk]);elc1.ruV = mm;elc1.chuV = mm - 10 * siop / d1.k[kkkk];mm = mm - 10* siop /d1.k[kkkk];elc1.sjc = siop / d1.k[kkkk];maso.put(s, elc1);zonglux = zonglux + elc1.getL();} else if (s.startsWith("R")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(5 * siop / d1.k[kkkk]);elc1.ruV = mm;elc1.chuV = mm - 5 * siop / d1.k[kkkk];mm = mm - 5 * siop / d1.k[kkkk];elc1.sjc = siop / d1.k[kkkk];maso.put(s, elc1);zonglux = zonglux + elc1.getL();} else if (s.startsWith("D")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(20 * siop / d1.k[kkkk]);elc1.ruV = mm;elc1.chuV = mm - 20 * siop / d1.k[kkkk];mm = mm - 20 * siop / d1.k[kkkk];elc1.sjc = siop / d1.k[kkkk];maso.put(s, elc1);} else if (s.startsWith("A")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(20 * siop / d1.k[kkkk]);elc1.ruV = mm;elc1.chuV = mm - 20 * siop / d1.k[kkkk];mm = mm - 20 * siop / d1.k[kkkk];elc1.sjc = siop / d1.k[kkkk];maso.put(s, elc1);} else if (s.startsWith("S")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(15 * siop / d1.k[kkkk]);elc1.ruV = mm;elc1.chuV = mm - 15 * siop / d1.k[kkkk];mm = mm - 15 * siop / d1.k[kkkk];elc1.sjc = siop / d1.k[kkkk];maso.put(s, elc1);} else if (s.startsWith("P")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);elc1.ruV = mm;if(elc1.ofopen.startsWith("cut")){siop =0;mm=0;elc1.chuV = 0;}elseelc1.chuV = mm;elc1.sjc = siop / d1.k[kkkk];maso.put(s, elc1);} else if (s.startsWith("M")) {for (int cmd1 = 0; cmd1 < ddb.size(); cmd1++) {if (ddb.get(cmd1) == null) continue;Duobing dd = ddb.get(cmd1);if (dd.s.equals(s)) {search(s, maso, ddb, siop, d1.k[kkkk], zonglux, rui1);}}}}}else{siop = 0;for (Entry<String, Electric> c1 : d1.map.get(kkkk).entrySet()) {rui1=mm;parts8 = c1.getKey();s = parts8;cw=rui1;if (s.startsWith("K")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);if(elc1.ofopen.startsWith("t")){gg=1;elc1.chuV=0;}elseelc1.chuV=cw;if(cw!=0&&d1.k[kkkk]==0)elc1.sjc=100;elseelc1.sjc=0;elc1.scV(gg,cw);maso.put(s, elc1);} else if (s.startsWith("H")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);if (elc1.xuhao == 3) {yy = 1;String jkj = "";Pattern pattern = Pattern.compile("(.*).");Matcher matcher = pattern.matcher(s);while (matcher.find()) {jkj = matcher.group(1);}for (int d = 0; d < d1.map.size(); d++) {for (Entry<String, Electric> ignored : d1.map.get(d).entrySet()) {Electric elc2 = d1.map.get(d).get(jkj + 2);if (elc2 != null){yy = 2;if (elc1.ofopen.startsWith("t")){elc1.ofopen = "closed";}else{elc1.ofopen = "turned on";}elc1.chuV1=cw;maso.put(s, elc1);break;}}}if (yy == 1) {if (elc1.ofopen.startsWith("t")){gg=1;elc1.ofopen = "closed";}else{elc1.ofopen = "turned on";}if(cw!=0&&d1.k[kkkk]==0)elc1.sjc=100;elseelc1.sjc=0;elc1.scV(gg,cw);elc1.chuV = 0;elc1.chuV1 = cw;maso.put(s, elc1);}}else if (elc1.xuhao == 2) {if(cw!=0&&d1.k[kkkk]==0)elc1.sjc=100;elseelc1.sjc=0;elc1.scV(gg,cw);String jkj = "";Pattern pattern = Pattern.compile("(.*).");Matcher matcher = pattern.matcher(s);while (matcher.find()) {jkj = matcher.group(1);}for (int d = 0; d < d1.map.size(); d++) {for (Entry<String, Electric> c2 : d1.map.get(d).entrySet()) {Electric e = d1.map.get(d).get(jkj + 3);if (e != null){yy = 2;e.sjc =  elc1.sjc;e.chuV=elc1.chuV;}}}if(elc1.ofopen.startsWith("t")){elc1.ruV=0;gg=1;}elseelc1.ruV=cw;if(yy!=2){elc1.chuV1=0;maso.put(s, elc1);}}} else if (s.startsWith("B")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);elc1.scV(gg,cw);if(cw!=0&&d1.k[kkkk]==0)elc1.sjc=100;elseelc1.sjc=0;maso.put(s, elc1);zonglux = zonglux + elc1.getL();} else if (s.startsWith("R")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);elc1.scV(gg,cw);if(cw!=0&&d1.k[kkkk]==0)elc1.sjc=100;elseelc1.sjc=0;maso.put(s, elc1);zonglux = zonglux + elc1.getL();} else if (s.startsWith("D")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);elc1.scV(gg,cw);if(cw!=0&&d1.k[kkkk]==0)elc1.sjc=100;elseelc1.sjc=0;maso.put(s, elc1);} else if (s.startsWith("A")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);elc1.scV(gg,cw);if(cw!=0&&d1.k[kkkk]==0)elc1.sjc=100;elseelc1.sjc=0;maso.put(s, elc1);} else if (s.startsWith("S")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);elc1.scV(gg,cw);if(cw!=0&&d1.k[kkkk]==0)elc1.sjc=100;elseelc1.sjc=0;maso.put(s, elc1);} else if (s.startsWith("P")) {Electric elc1 = d1.map.get(kkkk).get(parts8);elc1.reshuV(siop);elc1.scV(gg,cw);if(elc1.ofopen.startsWith("cut")){gg=1;elc1.chuV = 0;}elseelc1.chuV=cw;if(cw!=0&&d1.k[kkkk]==0)elc1.sjc=100;elseelc1.sjc=0;maso.put(s, elc1);} else if (s.startsWith("M")) {for (int cmd1 = 0; cmd1 < ddb.size(); cmd1++) {if (ddb.get(cmd1) == null) continue;Duobing dd = ddb.get(cmd1);if (dd.s.equals(s)) {search(s, maso, ddb, siop, d1.k[kkkk], zonglux, rui1);}}}}}}}}return new Fanhui(maso, zonglux, rui1);}
}

总结:

这次作业相较于上一次的作业来说,新增二极管,以及输出的相关要求,在输出电器的同时,还要输出其两个端点的电势。这个对我来说难度相当大,在图书馆里面待了好几天也没有解决好这个问题。最后拿到的分数很少。感觉这次的题目很难,只拿到了36分,可能也是因为期末的原因,感觉花的时间也没有之前得多。

3.采坑心得:

题目所给的测试样例只是最终得到结果的一部分,还有一些测试点还需要自己慢慢去摸索,比如说在写第六次大作业的时候,题目只给了三个测试样例,还有很多测试点要一个一个去思考,比如什么互斥开关的问题,以及二极管的正反问题,在输出的时候注重每个电器的端点电压等等,这几次的题目读题的时候感觉不是很难,就想着直接写应该就可以写出来,但是到了代码实现的时候就完全不一样,感觉输出的都有一点问题,尤其是有些地方在改动的时候,因为距离上一次的作业有个五六天,导致有些地方忘记了上次是怎么写的,然后在修改的时候总有一些地方对不上正确的答案,然后这些地方都花了很多的时间去修改。

4.改进建议:

 每次写题目,代码总会有很多的报错,将代码放进Idea可以快速的解决相关的问题,但是写题目的时候还是要认真的去对待,最后一次大作业因为期末的原因,有一点松懈,到作业快要结束的时候才开始认真的去思考去写代码。题目比较长的时候,有时候无从下手,要把重点先放在建类上面,把每个类的属性搞清楚,然后对题目的输入进行分析,写出相应的正则表达式获取重要的信息用ArrayList或者Map存起来,在输出的时候注意输出的顺序。有些时候题目不会把所有的测试点都写出来,要自己一个一个去想,要先把题目说的不要求的先删去,然后注重一些细节,拿此次作业来说吧,我感觉难度大的就是电势,物理没有学好,主要是思考时间也没有很多,就得分很少,以后写题目就要认真的去对待,花多点时间去思考,不会的就去学。

5.总结:


1.题目所给的测试样例只是最终得到结果的一部分,还有一些测试点还需要自己慢慢去摸索,要对题目了解清楚之后,在进行分析,才能知道如何去输出,以什么样的关系去输出,每一个类对应关系以及各自所代表的含义,题目确实很复杂,唯有沉下心去分析类的关系,才能把题目做好。
2.仔细阅读作业指导,确保完全理解了题目的要求。
3.基于题目要求,分析需要哪些类和对象,以及它们之间的关系。这可能涉及到继承、接口、多态等面向对象的概念。,正确分析是很重要的,比如说这次写代码,可以较简单的去存储需要的数据,但是当时没有想到,然后就很复杂的去存储Map套Map套Map,这样很麻烦,后面快写完的时候发现可以简单的去存储
4.命名规范:使用清晰、有意义的变量和类名,遵循Java的命名规范。
5.代码结构:保持代码的整洁和模块化,使用适当的注释来解释复杂的逻辑。
6.代码复用:尽量复用之前写过的代码,避免重复劳动。

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

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

相关文章

02-单链表的操作

单链表的创建:头插法 #include <stdio.h> #include <malloc.h> #include <stdbool.h>typedef int ElemType; /*定义一个单链表*/ typedef struct LNode{ElemType data;/*下一个元素的地址指针*/struct LNode *next; } LNode,*LinkList;/***单链表的创建* @r…

Java7-8次大作业题目集总结性Blog

Java4~6次大作业题目集的总结性Blog前言这两次大作业无疑就是更好学会面向对象编程了,并且是新添加的信息能够合理处理然后使用。 题量不大,只是在之前的代码上运用开闭原则修改代码,但我还是不能能很好掌握开闭原则。 难度有点大了,第八次大作业在之前的基础上添加了并联…

Linux系统基本介绍

一、Linux系统基本介绍 【1】、Linux操作系统特点多任务的操作系统多任务操作系统严格区分大小写Linux一切皆文件所有文件的起点都是“/”根目录对于Linux操作系统来说文件的后缀名没有任何实际意义,他不像是Windows操作系统中的后缀名代表了本文件是什么类型的文件。Linux中文…

STM32延时函数

STM32延时函数(查询定时器实现) 之前在STM32中使用延时函数的时候,都是直接使用,并不了解其中的原理。经过查阅资料,这里记录一下大致原理。 首先直接贴出来延时函数delay.c,通过查询的SysTick Timer的STK_CTRL寄存器的计数标志位COUNTFLAG方式实现,其中SysTick是一个结构…

OOP最后两次作业总结

OPP最后两次作业总结 前言 两次题目集其实都是在前面的基础上进行迭代,第一次作业说实话我没花什么时间,毕竟我从写第一次PTA就是给电器使用两个接点,我从拿到题目到达到及格分只用了半天时间,然后最后又花了点时间测试几个样例,拿到了82分。然后最后一次作业嘛,我几乎是…

游戏常用运行库 合集 | Game Runtime Libraries Package(2.1.24.0618)

软件简介: 游戏常用运行库 合集 整合了许多游戏会用到的运行库,支持 Windows XP – Windows 11 系统,并且支持自动检测系统勾选推荐的运行库,方便快捷。 本版特点: By:mefcl整合常见最新游戏所需运行库根据系统自动勾选推荐的版本纯净安装包无病毒和弹窗行为支持静默安装…

背包DP——混合背包

顾名思义,混合背包就是将前面三种的背包问题(01,完全,多重)混合起来,有的只能取一次,有的能取无限次,有的只能取 k 次。 正解特解 部分情况下,如小数据,可以转换成多重背包(把完全情况的数量换成足够大,如1e7,就把完全相对变成了多重) 例题 https://www.luogu.co…

cent os配置docker(解决2024.6月docker镜像拉取问题)

docker拉取镜像目前已经失效,多方查找目前试了试下面这个还可以用 首先执行以下命令安装dockeruname -r yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum …

Field stock doesnt have a default value

当你遇到 "Field stock doesnt have a default value"​ 这个错误时,这意味着你正在尝试插入一条新记录到数据库中,但是涉及的 stock 字段没有提供一个值,同时该字段在数据库表定义中也没有设置默认值(default value),并且数据库配置为严格模式,不允许NULL值或…

南昌航空大学软件学院23201823第三次blog

一、前言 这是最后一次blog了,是一些关于题目集7~8次的总结以及这一个学期对于PTA题目集的总结了。最后这两次的题目难度其实我并不是非常了解,大抵是因为我已经来不及挽救了,但是我还是想说其实这几次题目的难度感觉并没有想象中的触不可及,而是我自己没有花足够的心思去了…

中国城市降雨量历史记录查询 All In One

中国城市降雨量历史记录查询 All In One 降雨量 历史记录中国城市降雨量历史记录查询 All In One降雨量 历史记录https://www.ceicdata.com.cn/zh-hans/china/precipitation 中国 降水量:河南:郑州 1990 - 2022 | 月 | 毫米 | 气象局 降水量:河南:郑州在12-01-2022达1.500毫米,…

oracle安装调用图形化失败

报错现象: [grid@19c01 grid]$ ./gridSetup.sh ERROR: Unable to verify the graphical display setup. This application requires X display. Make sure that xdpyinfo exist under PATH variable.No X11 DISPLAY variable was set, but this program performed an operatio…

Kubernetes-高可用k8s集群部署(多Master节点二进制方式)

一、安装Docker 配置docker的yum源地址 yum -y install wget wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum provides docker-ce 安装指定的docker版本 yum install -y docker-ce-20.10.7 docker-ce-cli-20…

23201813-第三次blog作业

前言: 这学期已经接近了尾声,java和面向对象的学习也已经接近结束,在这门课程的最后时间里,剩余的两次pta我都没有完成,一部分原因是后面的题目集感觉好难,然后要经过好多迭代,还有期末的考试学科很多,有大部分的时间用来复习,所以对pta就基本上放弃了,所以最后两个题…

一个HTML页面demo

代码:<!--* @Description: 一个博客页面布局,加上一些CSS和JS样式* @Author: zhangyh* @Date: 2024-06-29 15:25:16* @LastEditTime: 2024-06-29 23:06:12* @LastEditors: zhangyh* Copyright (c) 2024 by zhangyinghui181217@163.com, All Rights Reserved. --><!…

WPF网格类型像素着色器

由于WPF只能写像素着色器,没法写顶点着色器,所以只能在这上面做文章了 刚好有个纹理坐标TEXCOORD输入可用,而且值的范围是已知的0-1,左上角是原点,这就好办了 例子 索引 二分网格使用ceil 0-1移动定义域到-0.5 - 0.5,然后向上取整变成 0 / 1float4 main(float2 uv : TEXC…

LLM大模型: RAG两大核心利器: M3E-embedding和bge-rerank

RAG的效果好不好,最核心依赖两点:文本embedding语义提取的好不好,rerank的排序效果好不好(包含正确答案的文本是不是排在前面)!各自使用的环节如下:1、文本embedding的提取:理论上讲,任何transformer架构的encoder部分都可用于生成token的embedding,然后采用合适的po…

oop-PTA题目集7~8总结

一、前言 第七次和第八次的题目集中的题目均是在前两次的电路模拟程序中增加新的内容,难度相较前面两次的题目有明显增大,主要是电路结构更加复杂,比如多并联、并联包含并联等较为特殊的情况,另外,新增了一些需要特殊处理的电器设备,比如有三个引脚的互斥开关、与其他设备…

lamp lump

为网站备案老王:记得一定要完成ICP备案,才可以通过网站对外提供互联网信息服务! 老王:根据 《互联网信息服务管理办法》以及 《非经营性互联网信息服务备案管理办法》,国家对非经营性互联网信息服务实行备案制度,对经营性互联网信息服务实行许可制度。未取得许可或者未履…

UI Explorer 的下载

离线版下载地址参考 UI Path 论坛的一篇文章:Standalone UiExplorer client download?该链接现在依然有效。 另外,替换链接中的版本号可获取其他版本的下载路径。 理论上,遍历此链接可以获取最新版本的独立程序包。有了计划记得推动,不要原地踏步。