记:判断三个点是否在一条直线上

描述
纯哥想知道,平面上的三个点是否在一条直线上

输入
一个正整数n,表示n组案例。

接下来是n行,每行代表一组案例,由6个整数a、b、c、d、e、f构成,代表平面直角坐标系上的三个点(a,b), (c,d), (e,f)。

输出
针对每组案例,如果三个点在同一条直线上,则输出Yes,否则输出No。

每组案例输出完都要换行。

样例输入
2

1 1 2 2 3 3

1 1 2 3 3 2

样例输出
Yes

No

#include
using namespace std;
int main()
{
	int n;
	cin >> n;
	while (n--)
	{
		int a, b, c, d, e, f,k1,k2,k3;
		cin >> a >> b >> c >> d >> e >> f;
		if (c != a && e != c && e != a)
		{
			k1 = (d - b) / (c - a);
			k2 = (f - d) / (e - c);
			k3 = (f - b) / (e - a);
			if (k1 == k2 && k2 == k3)
			{
				cout << "Yes";
			}
			else
			{
				cout << "No";
			}
			cout << endl;
		}
		else if (a == c && c == e)
		{
				cout << "Yes"<<endl;
		}
		else
		{
			if (b == d && d == f)
				cout << "Yes";
			else
				cout << "No";
			cout << endl;
		}
	}
	return 0;
}

总结:分三种情况考虑:
①当三条直线的斜率都存在时,若三条直线的斜率相同,输出yes;
②三条直线的斜率都不存在,即三个横坐标相同,输出yes;
③其他情况下:若三条直线的纵坐标相同,输出yes;
否则输出no;

你可能感兴趣的:(记:判断三个点是否在一条直线上)