当前位置:编程学习 > C#/ASP.NET >>

面试题:判四边形类型

要求:写一个API,输入是4个长度(注意:不是坐标),返回是四边形的类型。

这个谁能给个思路啊???? --------------------编程问答-------------------- 要凸凹之分的四边形吗?  

--------------------编程问答-------------------- 首先 我就觉得 这个题有问题,4个长度 是随即的 还是 有顺序的 a,b,c,d
如果是随即的话 那四边形的类型 我想就只有两种 是正方形 不是正方形
如果是有顺序的话 ,那就分析呗 有哪些四边形 ? 正方形(菱形) 长方形 梯形等;
if(a=b && b=c && c=d && d=a)
{
  正方形(菱形)
}
else if (.....)
{
  ....
}  --------------------编程问答-------------------- 没坐标 只有长度 那我还可以是一条直线咧  --------------------编程问答--------------------
引用 2 楼 cjb082400 的回复:
首先 我就觉得 这个题有问题,4个长度 是随即的 还是 有顺序的 a,b,c,d
如果是随即的话 那四边形的类型 我想就只有两种 是正方形 不是正方形
如果是有顺序的话 ,那就分析呗 有哪些四边形 ? 正方形(菱形) 长方形 梯形等;
if(a=b && b=c && c=d && d=a)
{
  正方形(菱形)
}
else if (.....)
{
  ....

恩,分析的很有道理。貌似关键就是无法确定是否有顺序。
延伸一下,假设是有顺序的, 那么角度也无法确定吧。貌似只有三角形是稳定的 --------------------编程问答-------------------- http://baike.baidu.com/link?url=HzyooorcDlGzb0VKyKdUe5-QXgAw9FaFB202bFcwN65Zz2JlwLSVaRXtUIlRH0l_
多看看 四边形的定义吧 --------------------编程问答-------------------- 换言之,只给长度的话,貌似只能识别到菱形,一般平行四边形,和其他四边形的程度? --------------------编程问答-------------------- 根据数学上对四边形各种类型的定义。,比如正方形:就判断4条边和对角线程度 是否相等, 长方形也是这样。菱形的话就就(1/2)对角线平方和与一条边相等判断。其他的就是不规则的四边形了。因为你说的是4边形,所以凹形的就忽略了 --------------------编程问答-------------------- 要不就听5楼的话,看4边形的定义 --------------------编程问答-------------------- 你这个是空间的还是平面的? --------------------编程问答-------------------- 是不是返回的不只是一个四边形呢,比如4线相等,返回的是正方形和菱形,
两两相等返回的是长方形和菱形、梯形
然后就是直角梯形难分了,和不规则形 --------------------编程问答-------------------- 1、是不是返回的不只是一个四边形呢,比如4线相等,返回的是正方形和菱形,
2、两两相等返回的是长方形和菱形
3、梯形的两底之差应大于两腰之差而小于两腰之和       这个判断能否组成梯形
4、(b-a)+c>d 这个公式去判断4条边是否能组成四边形 --------------------编程问答-------------------- 判断不了。

菱形和正方形可以四边完全相等。 --------------------编程问答-------------------- 再比如,两条较长的线组成一个夹角较小的V,上面是两条较短的线组成一个夹角较大的V。这样一个凹四边形就可以和矩形、平行四边形的线长度完全相等。

总之,稍微想一下就知道单从线段长度判断,这是办不到的。 --------------------编程问答-------------------- 只知道四条边长度怎么可能做到啊。首先菱形和正方形就判断不了了。再说,你的长度是任意的话,能不能组成四边形还是问题。 --------------------编程问答-------------------- 感觉只能返回 是不是可以组成四边形 和 大概类型  因为四边形不稳定所以 就没办法返回了 --------------------编程问答-------------------- 冲面试官来两拳 你就明白了!!! --------------------编程问答-------------------- 有多解就返回多解嘛 --------------------编程问答-------------------- 单纯的从线的长度来判断,个人感觉不怎么靠谱,比如四边完全相等的形状就有两种 --------------------编程问答-------------------- 大概就是让你判断下是不是正方形,矩形,菱形,平行四边形,等腰梯形吧。这还是很好判断的。
有两根相等,两根不等就是等腰梯形。
两两相等就是矩形和平行四边形
4根相等就是正方形和菱形。
其他都是不规则四边形。
判断完毕。 --------------------编程问答--------------------
引用 19 楼 yuwenge 的回复:
大概就是让你判断下是不是正方形,矩形,菱形,平行四边形,等腰梯形吧。这还是很好判断的。
有两根相等,两根不等就是等腰梯形。
两两相等就是矩形和平行四边形
4根相等就是正方形和菱形。
其他都是不规则四边形。
判断完毕。

+1 --------------------编程问答-------------------- 直接告诉他题目有问题,四个固定的长度,四边形不是静定的,有可能是凹凸四边形、三角形或组成不了多边形  --------------------编程问答--------------------
引用 21 楼 leolee82 的回复:
直接告诉他题目有问题,四个固定的长度,四边形不是静定的,有可能是凹凸四边形、三角形或组成不了多边形 
四边形的类型 貌似在初中课本中详细定义。 --------------------编程问答-------------------- 1.可能性:是否可以组成四边形
2.凹凸性:是否可以组成凹四边形
3.特殊性:是否可经组成正方形、矩形、菱形、平行四边形、梯形、等腰梯形、直角梯形
--------------------编程问答--------------------
引用 19 楼 yuwenge 的回复:
大概就是让你判断下是不是正方形,矩形,菱形,平行四边形,等腰梯形吧。这还是很好判断的。
有两根相等,两根不等就是等腰梯形。
两两相等就是矩形和平行四边形
4根相等就是正方形和菱形。
其他都是不规则四边形。
判断完毕。

第一条有错吧。。。只有一对边相等,可能是异形
--------------------编程问答-------------------- 四边形的种类:正方形,矩形,菱形,平行四边形,等腰梯形,不规则四边形,然后条件判读即可,
--------------------编程问答--------------------
引用 24 楼 zhoujk 的回复:
Quote: 引用 19 楼 yuwenge 的回复:

大概就是让你判断下是不是正方形,矩形,菱形,平行四边形,等腰梯形吧。这还是很好判断的。
有两根相等,两根不等就是等腰梯形。
两两相等就是矩形和平行四边形
4根相等就是正方形和菱形。
其他都是不规则四边形。
判断完毕。

第一条有错吧。。。只有一对边相等,可能是异形

你可以弄4根小棍自己在桌上摆摆看。或者去问一下你的初中数学老师,看他不凑死你。 --------------------编程问答--------------------
引用 26 楼 yuwenge 的回复:
你可以弄4根小棍自己在桌上摆摆看。或者去问一下你的初中数学老师,看他不凑死你。

一组对边相等,不能保证另一组对边必然平行。当另一组对边不平行时,就只能是异形。而且,我的数学老师应该不会“凑”我吧 --------------------编程问答-------------------- 在立体几何上,四个线段都想等也不是都是菱形或正方形 --------------------编程问答--------------------
引用 27 楼 zhoujk 的回复:
Quote: 引用 26 楼 yuwenge 的回复:
你可以弄4根小棍自己在桌上摆摆看。或者去问一下你的初中数学老师,看他不凑死你。

一组对边相等,不能保证另一组对边必然平行。当另一组对边不平行时,就只能是异形。而且,我的数学老师应该不会“凑”我吧

你是对的,我刚被初中数学老师凑过了。 --------------------编程问答-------------------- 要求:写一个API,输入是4个长度(注意:不是坐标),返回是四边形的类型。

如果最长边小于其它三边之和,就不成立。
如果最长边等于其它三边之和,就是一条直线。
//下列算法没有考虑两边重合的情况:
如果四边相等,就是菱形,但只有长度没办法判断是不是正方形。
如果对边相等,就是平行四边行,但没法判断是不是矩形。
只根据四条边长的数据,没法判断是否是凹凸四边形 --------------------编程问答-------------------- 这个简单:
第一步:随机产生第一个顶点
第二步:以此顶点为圆心,第一条他要半径,随便取一个一点,得到第二个顶点
第三步:以第二顶点为圆心,以第二条边为半径,再取一个顶点。(注意:在此要用三角形原理验证),得到第三个顶点。
第四步:将第一个顶点与第三个顶点连接起来就是个四边形(注意:要注意验证交叉等值问题)
--------------------编程问答--------------------
引用 楼主 cppfaq 的回复:
要求:写一个API,输入是4个长度(注意:不是坐标),返回是四边形的类型。

这个谁能给个思路啊????


都有什么类型呢? --------------------编程问答--------------------
引用 25 楼 CZLJ2008 的回复:
四边形的种类:正方形,矩形,菱形,平行四边形,等腰梯形,不规则四边形,然后条件判读即可,


嗯,很好。

根据这个,答案基本上已经有了。 --------------------编程问答--------------------
引用 31 楼 KJ_Wang 的回复:
这个简单:
第一步:随机产生第一个顶点
第二步:以此顶点为圆心,第一条他要半径,随便取一个一点,得到第二个顶点
第三步:以第二顶点为圆心,以第二条边为半径,再取一个顶点。(注意:在此要用三角形原理验证),得到第三个顶点。
第四步:将第一个顶点与第三个顶点连接起来就是个四边形(注意:要注意验证交叉等值问题)

数学学得好好啊膜拜下
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,