永发信息网

c语言 算平行四边形面积

答案:4  悬赏:80  手机版
解决时间 2021-03-14 09:37
  • 提问者网友:蓝莓格格巫
  • 2021-03-14 05:12
任意输入四个点到平面内(可重合),判断能否组成平行四边形,若能,输出其面积;若不能,输出不能组成平行四边形。 谢谢
最佳答案
  • 五星知识达人网友:不甚了了
  • 2021-03-14 06:15
4个点,组成四边形,那么就是有4条边,先判断两条边的斜率,如果相同,在判断剩下的两条边的斜率,如果再相同,那么就是平行四边形
4个点组成两对平行线,就是2中情况
一、1 2组成一条线,那么3 4组成一条线。剩下1 4和2 3组成两条线
二、1 3组成一条线,那么2 4组成一条线。剩下1 4和2 3组成两条线

分别判断情况
其实就是判断斜率问题,这里说一下,斜率判断不要用除法,而要用乘法
原因是除法小数近似时比较有误差,而乘法没有误差

做一个斜率比较的子函数
int fun1(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4,int flag)
//这里要是vc的话,可以吧点的类传过去,flag是一个标记,标记那两条线比较
//最后返回一个数字标记那两条线的比价,不平行返回0
{
if((x1-x2)*(y3-y4)!=(x3-x4)*(y1-y2))
return 0;
return flag;
}

主函数中也比较简单的判断
int m[4],n[4],f;
int i;
//输入四个点到mn中
if(12 34点和14 23点的斜率判断)
求面积
else if(13 24点和14 23点的斜率判断)
求面积
else
不能
全部回答
  • 1楼网友:低血压的长颈鹿
  • 2021-03-14 10:07
四边形的特征是对角线相交,任意两点可以组成一条直线,你先把20*20的矩阵枚举成数组,用概率论的思想应该很容易算出来了。
  • 2楼网友:青尢
  • 2021-03-14 08:27
楼上的方法不错,也可以利用两组对角相等,四个角总和为360度…至于角度的确定,可以利用余弦定理,根据点坐标,分别计算长度
  • 3楼网友:从此江山别
  • 2021-03-14 07:18
我只能判断能不能组成平行四边形,面积没做出来,希望对你有用: #include typedef struct node { int x; int y; } Node; int main(void) { Node n[4]; int i; for (i = 0; i < 4; i++) { printf("Enter the node %d->x\tnode %d->y:\n", i + 1, i + 1); scanf("%d %d", &n[i].x, &n[i].y); } if (((n[3].x - n[2].x) == (n[1].x - n[0].x)) && ((n[3].y - n[2].y) == (n[1].y - n[0].y))) { printf("mianji: %d\n", ((n[1].x - n[0].x) * n[2].y)); } else if (((n[3].x - n[1].x) == (n[2].x - n[0].x)) && ((n[3].y - n[1].y) == (n[2].y - n[0].y))) { printf("mianji: %d\n", ((n[1].x - n[0].x) * n[2].y)); } else if (((n[3].x - n[0].x) == (n[1].x - n[2].x)) && ((n[3].y - n[0].y) == (n[1].y - n[2].y))) { printf("mianji: ****\n"); } else { printf("cannot\n"); } return 0; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯