首页 > 其他分享 >题目集1~3的总结性Blog

题目集1~3的总结性Blog

时间:2022-10-02 23:35:55浏览次数:72  
标签:输出 总结性 题目 Blog 坐标 格式 三角形 输入

一、前言

  对于本次blog所涉及的题目,个人感觉主要是对于String类型的变量处理,以及对于面向过程所使用的类的用法有较高要求,难度也是逐渐递增,尤其是点线三角形更是如此 ,如果不采取类的思想,代码会及其冗余,当然也是第一次如此直接的使用面向对象的编程思维,免不了需要学习其使用过程,中间也会不断地理解面向对象的好处,对于代码量较小的程序,面向对象相对于面向过程的优势似乎没有那么明显。下图是所有题目的大致代码分析。

 

 

二、设计与分析

  1. 7-2 串口字符解析:

    RS232是串口常用的通信协议,在异步通信模式下,串口可以一次发送5~8位数据,收发双方之间没有数据发送时线路维持高电平,相当于接收方持续收到数据“1”(称为空闲位),发送方有数据发送时,会在有效数据(5~8位,具体位数由通信双方提前设置)前加上1位起始位“0”,在有效数据之后加上1位可选的奇偶校验位和1位结束位“1”。请编写程序,模拟串口接收处理程序,注:假定有效数据是8位,奇偶校验位采用奇校验。

    输入格式:

    由0、1组成的二进制数据流。例如:11110111010111111001001101111111011111111101111

    输出格式:

    过滤掉空闲、起始、结束以及奇偶校验位之后的数据,数据之前加上序号和英文冒号。
    如有多个数据,每个数据单独一行显示。
    若数据不足11位或者输入数据全1没有起始位,则输出"null data",
    若某个数据的结束符不为1,则输出“validate error”。
    若某个数据奇偶校验错误,则输出“parity check error”。
    若数据结束符和奇偶校验均不合格,输出“validate error”。
    如:11011或11111111111111111。
    例如:
    1:11101011
    2:01001101
    3:validate error

 

  题目分析:不难看出代码的圈复杂度为2.00,说明整体的结构还行,虽然本人在其写完后感觉可能复杂度很高,使用了大量的if、else语句,本题可以算是一次正式的接触接收String类型变量类型进行数据处理,也是用到了很多函数,比如charat()、length(),但是对于数据流的处理,感觉对于程序的架构思路有一点难度(对于本人这个小菜鸡而言)

 

2、点、线计算

2.1

7-1 点线形系列1-计算两点之间的距离
分数 10 作者 蔡轲 单位 南昌航空大学 输入连个点的坐标,计算两点之间的距离 输入格式: 4个double类型的实数,两个点的x,y坐标,依次是x1、y1、x2、y2,两个点的坐标之间以空格分隔,每个点的x,y坐标以英文“,”分隔。例如:0,0 1,1或0.1,-0.3 +3.5,15.6。
若输入格式非法,输出"Wrong Format"。
若输入格式合法但坐标点的数量超过两个,输出“wrong number of points”。     2.2 7-2 点线形系列2-线的计算 分数 42 作者 蔡轲 单位 南昌航空大学

用户输入一组选项和数据,进行与直线有关的计算。选项包括:
1:输入两点坐标,计算斜率,若线条垂直于X轴,输出"Slope does not exist"。
2:输入三个点坐标,输出第一个点与另外两点连线的垂直距离。
3:输入三个点坐标,判断三个点是否在一条线上,输出true或者false。
4:输入四个点坐标,判断前两个点所构成的直线与后两点构成的直线是否平行,输出true或者false.
5:输入四个点坐标,计算输出前两个点所构成的直线与后两点构成的直线的交点坐标,x、y坐标之间以英文分隔",",并输出交叉点是否在两条线段之内(不含四个端点)的判断结果(true/false),判断结果与坐标之间以一个英文空格分隔。若两条线平行,没有交叉点,则输出"is parallel lines,have no intersection point"。

输入格式:

基本格式:选项+":"+坐标x+","+坐标y+" "+坐标x+","+坐标y。
例如:1:0,0 1,1
如果不符合基本格式,输出"Wrong Format"。
如果符合基本格式,但输入点的数量不符合要求,输出"wrong number of points"。
不论哪个选项,如果格式、点数量都符合要求,但构成任一条线的两个点坐标重合,输出"points coincide",

 

 

题目分析:这里我就把这一次作业前两题的点和线放一起说了,第三题因为直接面向过程了,就另外稍后再说。

创建了Point和Line两个对象类,然后再在主类Main里面调用,对于选项的输入用五个if判定,然后再在里面分别判断,首先读入用户输入,用split函数将其按照特定符号分隔开并存储

在数组里面,后期转化成坐标需要用强制类型转换,这里用到了类似于Point p2 = new Point(Double.parseDouble(string2[0]),Double.parseDouble(string2[1]))的方法,当然用valueof()也是可以的。

 

3.

7-3 点线形系列3-三角形的计算 分数 48 作者 蔡轲 单位 南昌航空大学

用户输入一组选项和数据,进行与三角形有关的计算。选项包括:
1:输入三个点坐标,判断是否是等腰三角形、等边三角形,判断结果输出true/false,两个结果之间以一个英文空格符分隔。
2:输入三个点坐标,输出周长、面积、重心坐标,三个参数之间以一个英文空格分隔,坐标之间以英文","分隔。
3:输入三个点坐标,输出是钝角、直角还是锐角三角形,依次输出三个判断结果(true/false),以一个英文空格分隔,
4:输入五个点坐标,输出前两个点所在的直线与三个点所构成的三角形相交的交点数量,如果交点有两个,则按面积大小依次输出三角形被直线分割成两部分的面积。若直线与三角形一条线重合,输出"The point is on the edge of the triangle"
5:输入四个点坐标,输出第一个是否在后三个点所构成的三角形的内部(输出in the triangle/outof triangle)。
必须使用射线法,原理:由第一个点往任一方向做一射线,射线与三角形的边的交点(不含点本身)数量如果为1,则在三角形内部。如果交点有两个或0个,则在三角形之外。若点在三角形的某条边上,输出"on the triangle"

输入格式:

基本格式:选项+":"+坐标x+","+坐标y+" "+坐标x+","+坐标y。点的x、y坐标之间以英文","分隔,点与点之间以一个英文空格分隔。

输出格式:

基本输出格式见每种选项的描述。
异常情况输出:
如果不符合基本格式,输出"Wrong Format"。
如果符合基本格式,但输入点的数量不符合要求,输出"wrong number of points"。
如果输入的三个点无法构成三角形,输出"data error"。
注意:输出的数据若小数点后超过6位,只保留小数点后6位,多余部分采用四舍五入规则进到最低位。小数点后若不足6位,按原始位数显示,不必补齐。例如:1/3的结果按格式输出为 0.333333,1.0按格式输出为1.0

选项4中所输入线的两个点坐标重合,输出"points coincide"

 

 

题目分析:

差不多复杂度相比于之前的代码就飙升到了17,说实话,面向对象虽然好用,但是对于反复的创建对象以及调用方法,还是偶尔会出现报错,而且每次报错改bug又有很长时间,所以第三题直接面向过程,全部放到主类里面了。

没啥好说的,具体的遇到问题以及解决过程再后面会说到。

三、踩坑心得

1.第一个就是数组查询越界问题了,这个算是逻辑错误吧,写代码过程遇到过很多次了,有时候就是改一下逻辑就好了,有时候是改一下正则判定

2.第二个就是对于强制类型转换的问题,大多数涉及坐标的需要将其转换为double类型,有时候选项判定也要转换为,这时候不是int类型,就第一次接触了interger类型的变量

3.有时候也会遇到方法不能调用,还有什么对象创建为空,是因为将类的属性或者方法设置了private类型,有时候加个static修饰一下就可以直接调用,或者是使用getxxx()或者

setxxx()就可以了(就是很头疼类似的问题)

PS:由于没料到要写blog,所以遇到的问题也没有保存截图,大多数就边查学习边debug也就解决了。

四、改进建议

说实话我感觉肯定有集成式的函数,还是要多了解,这样多用一些肯定可以简化我的代码过程和复杂度

五、总结

  •   收获

    • 对java的类和对象了解更加深刻,并且已经开始学着去使用它。
    • 编码的优化程度大大提高,程序的可读性更好了。
  •   不足

一.对java的熟练程度有待提高,还是过于依赖之前C语言的固有思维。

二.对题目的细节考虑不清,非常容易犯一些细节错误,造成测试点的错误。

  • 通过本阶段三次题目集的训练对教师、课程、作业、实验、课上及课下组织方式等方面提出的改进建议及意见 

  1. 老师的教学速度是可以接受的,但是试题难度跳跃性过大,学生需要花费非常多时间去学习掌握。(当然也有利于自我的自学能力)
  2. 希望老师可以对pta的题目进行分析和讲解。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back

标签:输出,总结性,题目,Blog,坐标,格式,三角形,输入
From: https://www.cnblogs.com/sjhsjh/p/16749760.html

相关文章

  • 题目集1~3的总结性Blog
    1.前言第一次作业难度相对较低,主要注重字符串的处理。第二次作业注重字符串的转换与匹配。第三次作业需要掌握正则表达式和代码复用,难度最高。2.设计与分析7-2串口字符......
  • PTA题目集阶段总结1
    PTA题目集阶段总结1 前沿概要 第一次写博客还是有点紧张的,毕竟我啥也不会,只能靠一点微薄的知识来支撑本篇文章的高度,在接下来的文章叙述中,如果你看出了些许(也有可能......
  • 总结性blog1
    一.前言经过前两次的简单AC后,第三次难度提升一大截,然后被大佬薄纱,写半天都WA,哭了。接下来,我会对每次的作业作一个简单的分析,以下将从知识点、题量、难度等方面讲述。1.......
  • 题目集1~3的总结
    前言:前两次大作业题目主要是对java基本语法的考察,例如:基础类型的使用以及String类方法的使用。第三次大作业则开始进入到面向对象程序设计的范畴,考察了类的设计。总体......
  • 题目集1-3
    前言:三次题目集中前两次的题目较为容易,与C语言相差不大,用面向过程的思维基本可以解决,但第三次的题目需要用面向对象的思维,且目前对java的掌握不太够,所以感觉会有点困难,甚至......
  • JAVA的PTA题目集1-3的总结
    一、前言:   第一次作业和第二次作业,是Java的入门题目,第一次作业题量较多,第二次作业题量适中,综合下来看两次作业均难度较低。写的时候基础薄弱,使用的逻辑更偏向c语言......
  • 题目集1~3的总结
    一、前言 题目集1主要是为了让我们熟悉java的一些基本操作,总体难度不大。题目集2相比题目集1难度难度略高,但目的仍是熟悉java的操作使用。题目集3的难度相比前两个有很......
  • 算法题目(1)
    题目1给定一个有序数组arr,代表坐落在X轴上的点给定一个正数K,代表绳子的长度返回绳子最多压中几个点?即使绳子边缘处盖住点也算盖住输入:第一行arr的size,k第二行arr......
  • PTA题目集1~3的总结
    一、前言在新学期中我们初步学习了JAVA这门新的计算机语言,相较于之前学习的c语言,数据结构,JAVA在算法的运用上几乎相同,但又有许多差异。JAVA语言最大的特点是要构造类,并通......
  • Welcome to my blog!
    (我一直在思考如何让我的博客显得干净整洁。你知道,现在很多的博客系统都是简单地把博主的文章按时间顺序从新到旧显示在主页,尽管有置顶功能,但是整体看起来依然有些混乱(......