蓝桥杯-每日刷题-020

顺时针逆时针

一、题目要求

  • 题目描述
    平面上的三个点A(0,0),B(1,0),C(0,2)。按A->B->C是逆时针,按C-B-A是顺时针。
    给你平面三点的顺序,请你判断是逆时针、顺时针还是共线。
  • 输入格式
    输入有若干行,每行有6个整数:X1、Y1、X2、Y2、X3、Y3表示你要顺序经过的三个点。
  • 输出格式
    每行输出一个结果,顺时针就输出“Clockwise”,逆时针就输出“Anticlockwise”,共线输出"Collineation"。
  • 输入样例
    0 0 1 0 0 2
    0 2 1 0 0 0
  • 输出样例
    Anticlockwise
    Clockwise

二、完整代码

#include 

int Fangxiang(int x1, int y1, int x2, int y2, int x3, int y3)
{
    int val = (y2 - y1) * (x3 - x2) - (x2 - x1) * (y3 - y2);
    if (val == 0) return 0; //共线
    return(val > 0) ? 1 : -1;//顺时针或逆时针
}
std::string Print(int x1, int y1, int x2, int y2, int x3, int y3)
{
    int result = Fangxiang(x1, y1, x2, y2, x3, y3);
    if (result == 0) return "Collineation";
    return (result == 1) ? "Clockwise" : "Anticlockwise";
}
int main() 
{
    int x1, y1, x2, y2, x3, y3;
    while (std::cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3)
    {
        std::cout << Print(x1, y1, x2, y2, x3, y3) << std::endl;
    }
    return 0;
}

三、解题关键

  • 向量的交叉积
    蓝桥杯-每日刷题-020_第1张图片

你可能感兴趣的:(蓝桥杯,c++,算法)