c语言求三点是否共线,代码如下,求解哪里错误

xunxinyuan 2011-11-27 11:18:43
#include "stdio.h"
main()
{
double a1,a2,b1,b2,c1,c2,k1,k2;
scanf("%f%f",&a1,&a2);
scanf("%f%f",&b1,&b2);
scanf("%f%f",&c1,&c2);
k1=(c2-b2)*(b1-a1);
k2=(c1-b1)*(b2-a2);
if (k1==k2)
printf("YES\n");
if (k1!=k2)
printf("NO\n");

}
是学校的在线测试题,提交不正确,谁能找出哪里错误,或者给我一个使程序错误的数据,谢谢
...全文
664 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dzq138 2013-03-24
  • 打赏
  • 举报
回复
应用叉积来做这个比较好 area_abc=(a.x -c.x) * (b.y- c.y)- (a.y -c.y) * (b.x -c.x); 如果area_abc大于零,则c点在ab线的左边,如果小于零,c点在ab线的右边.如果为零则共线. / b. /c. / / /a. 那么我们应这样做 a1,a2,b1,b2,c1,c2 double area_abc=(a1 -c1) * (b2- c2)- (a2 -c2) * (b1 -c1); if (fabs(area_abc)<=2.2204460492503131e-016) { //这是共线 }

////你需要的代码
#include "stdio.h"
 main()
 {
 double a1,a2,b1,b2,c1,c2,k1,k2;
 scanf("%f%f",&a1,&a2);
 scanf("%f%f",&b1,&b2);
 scanf("%f%f",&c1,&c2);
 k1=(c2-b2)*(b1-a1);
 k2=(c1-b1)*(b2-a2); 

double area_abc=(a1 -c1) * (b2- c2)- (a2 -c2) * (b1 -c1);
if (fabs(area_abc)<=2.2204460492503131e-016)
 printf("YES\n");
else
 printf("NO\n");

 }
        

xunxinyuan 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 matrixcl 的回复:]
还有个错误,double型比较不能用 ==

一般写成类似这样 if ( a - b >= -0.000001 && a - b <= 0.00001) {}
[/Quote]恩,以前不知道,现在学了一点,谢谢
xunxinyuan 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lost_goast 的回复:]
没有看出有什么错误呀。。。
[/Quote]谢谢,是没错误。是学校的在线测试太垃圾,==0的情况我考虑了,它就不对了
xunxinyuan 2011-11-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 nuaazdh 的回复:]
应该分情况讨论
[/Quote]
谢谢,不过这个程序,就那两句话已经包括三种情况了,有两种和坐标轴平行的,还有一种是平常的直线
xunxinyuan 2011-11-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 nuaazdh 的回复:]
如果b1==a1或b2==a2,测程序出现除0错误
[/Quote]
谢谢,不过请认真看下程序,为了防止除0,我已经把它改成乘法了
nuaazdh 2011-11-27
  • 打赏
  • 举报
回复
应该分情况讨论
nuaazdh 2011-11-27
  • 打赏
  • 举报
回复
如果b1==a1或b2==a2,测程序出现除0错误
l369294289 2011-11-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 matrixcl 的回复:]

还有个错误,double型比较不能用 ==

一般写成类似这样 if ( a - b >= -0.000001 && a - b <= 0.00001) {}
[/Quote]
++
matrixcl 2011-11-27
  • 打赏
  • 举报
回复
还有个错误,double型比较不能用 ==

一般写成类似这样 if ( a - b >= -0.000001 && a - b <= 0.00001) {}

lost_goast 2011-11-27
  • 打赏
  • 举报
回复
没有看出有什么错误呀。。。

69,377

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧