编程题:点线形系列4-凸四边形的计算
[点线形系列4-四边形题目说明.pdf](~/a0811a0d-75e7-40a0-8bc4-67df62b2d9f1.pdf)
用户输入一组选项和数据,进行与四边形有关的计算。
以下四边形顶点的坐标要求按顺序依次输入,连续输入的两个顶点是相邻顶点,第一个和最后一个输入的顶点相邻。
选项包括:
1:输入四个点坐标,判断是否是四边形、平行四边形,判断结果输出true/false,结果之间以一个英文空格符分隔。
2:输入四个点坐标,判断是否是菱形、矩形、正方形,判断结果输出true/false,结果之间以一个英文空格符分隔。 若四个点坐标无法构成四边形,输出"not a quadrilateral"
3:输入四个点坐标,判断是凹四边形(false)还是凸四边形(true),输出四边形周长、面积,结果之间以一个英文空格符分隔。 若四个点坐标无法构成四边形,输出"not a quadrilateral"
4:输入六个点坐标,前两个点构成一条直线,后四个点构成一个四边形或三角形,输出直线与四边形(也可能是三角形)相交的交点数量。如果交点有两个,再按面积从小到大输出四边形(或三角形)被直线分割成两部分的面积(不换行)。若直线与四边形或三角形的一条边线重合,输出"The line is coincide with one of the lines"。若后四个点不符合四边形或三角形的输入,输出"not a quadrilateral or triangle"。
后四个点构成三角形的情况:假设三角形一条边上两个端点分别是x、y,边线中间有一点z,另一顶点s:
1)符合要求的输入:顶点重复或者z与xy都相邻,如x x y s、x z y s、x y x s、s x y y。此时去除冗余点,保留一个x、一个y。
2) 不符合要求的输入:z 不与xy都相邻,如z x y s、x z s y、x s z y
5:输入五个点坐标,输出第一个是否在后四个点所构成的四边形(限定为凸四边形,不考虑凹四边形)或三角形(判定方法见选项4)的内部(若是四边形输出in the quadrilateral/outof the quadrilateral,若是三角形输出in the triangle/outof the triangle)。如果点在多边形的某条边上,输出"on the triangle或者on the quadrilateral"。若后四个点不符合四边形或三角形,输出"not a quadrilateral or triangle"。
### 输入格式:
基本格式:选项+":"+坐标x+","+坐标y+" "+坐标x+","+坐标y。点的x、y坐标之间以英文","分隔,点与点之间以一个英文空格分隔。
### 输出格式:
基本输出格式见每种选项的描述。
异常情况输出:
如果不符合基本格式,输出"Wrong Format"。
如果符合基本格式,但输入点的数量不符合要求,输出"wrong number of points"。
注意:输出的数据若小数点后超过3位,只保留小数点后3位,多余部分采用四舍五入规则进到最低位。小数点后若不足3位,按原始位数显示,不必补齐。例如:1/3的结果按格式输出为 0.333,1.0按格式输出为1.0
选项1、2、3中,若四边形四个点中有重合点,输出"points coincide"。
选项4中,若前两个输入线的点重合,输出"points coincide"。
### 输入样例1:
选项1,点重合。例如:
in
1:-1,-1 -1,-1 1,2 1,-2
### 输出样例:
在这里给出相应的输出。例如:
out
points coincide
### 输入样例2:
不符合基本格式。例如:
in
1:-1,-1 1,2 -1,1 ++1,0
### 输出样例:
在这里给出相应的输出。例如:
out
Wrong Format
### 输入样例3:
选项1,输入点数量不对。例如:
in
1:-1,-1 -1,2
### 输出样例:
在这里给出相应的输出。例如:
out
wrong number of points
### 输入样例4:
选项1,正确输入判断。例如:
in
1:-1,-1 -1,1 1,2 1,-2
### 输出样例:
在这里给出相应的输出。例如:
out
true false
### 输入样例5:
选项2,输入点不构成四边形。例如:
in
2:10,10 1,1 0,0 1,20
### 输出样例:
在这里给出相应的输出。例如:
out
not a quadrilateral
### 输入样例6:
选项2,正方形。例如:
in
2:0,0 0,80 80,80 80,0
### 输出样例:
在这里给出相应的输出。例如:
out
true true true
### 输入样例7:
选项2。例如:
in
2:0,0 -10,80 0,160 -10,80
### 输出样例:
在这里给出相应的输出。例如:
out
not a quadrilateral
### 输入样例8:
选项3,凸四边形。例如:
in
3:-1,-1 -1,1 1,2 1,-2
### 输出样例:
在这里给出相应的输出。例如:
out
true 10.472 6.0
### 输入样例9:
选项3,。例如:
in
3:0,0 -10,100 0,99 10,100
### 输出样例:
在这里给出相应的输出。例如:
out
false 221.097 990.0
其余样例,详见附件。
答案:若无答案欢迎评论