判断三个点是否在同一条直线上
问题描述:
int A,B,C,k,a1,a2,b1,b2,c1,c2;
scanf("%d%d%d%d%d%d",&a1,&a2,&b1,&b2,&c1,&c2);
A=a2-k*a1;
B=b2-k*b1;
C=c2-k*c1;
if(A=B=C)
printf("yes");
else
printf("no");
return 0;
运行结果一直是 yes,可不可以再给我一个更优的代码
答
你这段代码错误挺多啊。。。
1.k没有赋值。
2.if(A=B=C)没有这种写法,应该是if(A==B && B ==C)
答
if(A==B&&B==C)
觉得有用的话采纳一下哈
答
初中数学老师教过如何判断三点是否在一条直线上。先ab点算一条直线斜率,再算bc直线的斜率,ca直线的斜率,判断三个斜率是否相等,三个斜率相等则共线,否则,不共线。
if ax -bx == 0 || bx -cx == 0:// 判断斜率为0的情况
if ax== bx == cx :// 判断横坐标是否相同,如果相同则显然在同一条直线上
return yes
else: // 有两个横坐标相同,有一个不相同,不共线
return no
else:// 斜率不为0,则计算3条斜率
k1=((ay-by)**2/(ax-bx)**2)**0.5
k2=((by-cy)**2/(bx-cx)**2)**0.5
k3=((ay-cy)**2/(ax-cx)**2)**0.5
if k1 == k2 == k3: // 三条斜率相等则共线
return yes
else :
return no
看逻辑。