输入线段的2个端点的坐标值x和y,再输入第3个点的坐标,判断点在不在线段上,输出YES或者NO。
输入格式:
按照先起点(x,y)再终点(x,y)的次序。第二行输入第3个点的坐标。坐标整型。第一行两点之间空格,如样例所示。
输出格式:
输出YES或者NO
输入:
(-20,20) (-20,-10) (0,0)
输出:
NO
判断点是否在某个线段上的方法:
法一:给定一个点,判断其他两个点与该点连线的斜率是否相同。若相同,则证明在;若不在,则证明不在。
法二:假设三个点是x,y,z,直接判断xy+yz是否等于xz即可(本题采用),具体思路可以看看轩哥码题:
【码蹄集新手村全题解09】选择结构 MT1168 – MT1184_哔哩哔哩_bilibili
#include
using namespace std;
int main( )
{
int x1,y1,x2,y2,x3,y3;
scanf("(%d,%d) (%d,%d)\n",&x1,&y2,&x2,&y2);
scanf("(%d,%d)",&x3,&y3);
//下面直接计算两点之间的距离,然后判断是否满足条件
double l1 = sqrt(pow((x1-x3),2.0) + pow((y1-y3),2.0));
double l2 = sqrt(pow((x2-x3),2.0) + pow((y2-y3),2.0));
double l = sqrt(pow((x1-x2),2.0) + pow((y1-y2),2.0));
if(l==l1+l2) cout << "YES";
else cout << "NO";
return 0;
}
输入2个矩形的左上角和右下角两个点的坐标值(x,y),判断2个矩形是否相互包含(一个在另一个内部,边框不重叠),输出YES或者NO。矩形的边应与x,y轴相平行。
输入格式:
输入整型,空格分隔。 每行输入一组信息。
输出格式:
输出YES或者NO
输入:
-20 20 20 -10 -10 10 10 -5
输出:
YES
判断其中一个矩形的左上角的x的值是否小于另一个矩形左上角的x的值,左上角y的值是否大于另一个矩形左上角y的值,右下角x的值大于另一个右下角x的值,y值小于另一个右下角的y值,如果是,则输出“YES”,否则输出"NO”,实现代码如下:
#include
int main()
{
int x1, y1, x2, y2, x3, y3, x4, y4;
scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
scanf("%d %d %d %d", &x3, &y3, &x4, &y4);
if ((x1 < x3 && x3 < x2 && y3 < y1 && y3 > y2) && (x1 < x4 && x4 < x2 && y4 < y1 && y4 > y2))
{
printf("YES");
}
else if ((x3 < x1 && x1 < x4 && y1 < y3 && y1 > y4) && (x3 < x2 && x2 < x4 && y2 < y3 && y2 > y4))
{
printf("YES");
}
else
{
printf("NO");
}
return 0;
}
明天继续吧。