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

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

输入
一个正整数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<iostream>
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;

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值