点是否在直线上


Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lld

Description

给定一条直线和一个点,判断该点是否在直线上。

 

Input

包含多组测试数据,每组测试数据占一行,每行6个整数x1,y1,x2,y2,x3,y3,分别表示三个点的坐标,p1(x1,y1),p2(x2,y2),p3(x3,y3),p1和p2点嗲表一条直线L。直线L保证不平行于坐标轴,p1和p2不重合。

 

Output

每组测试数据输出占一行,如果p3在直线L上则输出“yes”,否则输出“no”。

 

Sample Input

0 0 1 1 2 2

 

Sample Output

yes

题目分析:

看上去不难,但是实际上很容易WA……

为什么为什么为什么~不要被 “ 整数 ” 骗了哟!

整数相除的时候会自动向下取整,这道题把 int 改成 double 就能解决问题啦!


#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
	double x1,y1,x2,y2,x3,y3;
	while(scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3)!=EOF)
	{
		if(x3==x1 && y3==y1 || x3==x2 && y3==y2)
		{
			printf("yes\n");
			continue;
		}
		if((x3-x1)/(x2-x1)==(y3-y1)/(y2-y1))
		{
			printf("yes\n");
		}
		else
			printf("no\n");
	}
  return 0;
}