三点顺序

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述

现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断A,B,C是顺时针给出的还是逆时针给出的?

如:

图1:顺时针给出

图2:逆时针给出

<图1>                   <图2>

输入
每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示A,B,C三个点的横纵坐标。(坐标值都在0到10000之间)
输入0 0 0 0 0 0表示输入结束
测试数据不超过10000组
输出
如果这三个点是顺时针给出的,请输出1,逆时针给出则输出0
样例输入
0 0 1 1 1 3
0 1 1 0 0 0
0 0 0 0 0 0

样例输出

0

1

解法一:根据斜率判断方向

#include<stdio.h>
int main()
{int x1,x2,x3,y1,y2,y3;double a,b;while(scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3)){if(x1==0&&y1==0&&x2==0&&y2==0&&x3==0&&y3==0) break;if(x3-x1==0){b=x3;if(y1>y3){if(x2>b) printf("1\n");if(x2<b) printf("0\n");}if(y1<y3){if(x2<b) printf("1\n");if(x2>b) printf("0\n");}}else if (y3==y1){b=y3;if(x1>x3){if(y2<y3) printf("1\n");if(y2>y3) printf("0\n");}if(x1<x3){if(y2>y3) printf("1\n");if(y2<y3) printf("0\n");}}else{a=(y3-y1)*1.0/(x3-x1);b=y3-a*x3;if(a>0){if(y3>y1){if(y2-a*x2>b) printf("1\n");if(y2-a*x2<b)  printf("0\n");}if(y3<y1){if(y2-a*x2<b) printf("1\n");if(y2-a*x2>b)  printf("0\n");}}if(a<0){if(y3>y1){if(y2-a*x2<b) printf("1\n");if(y2-a*x2>b)  printf("0\n");}if(y3<y1){if(y2-a*x2>b) printf("1\n");if(y2-a*x2<b)  printf("0\n");}}}}
}

解法二:

利用矢量叉积判断是逆时针还是顺时针。

设A(x1,y1),B(x2,y2),C(x3,y3),则三角形两边的矢量分别是:
AB=(x2-x1,y2-y1), AC=(x3-x1,y3-y1)
则AB和AC的叉积为:(2*2的行列式)
|x2-x1, y2-y1|
|x3-x1, y3-y1|
值为:(x2-x1)*(y3-y1) - (y2-y1)*(x3-x1)
利用右手法则进行判断:
如果ABxAC>0,则三角形ABC是逆时针的;
如果ABxAC<0,则三角形ABC是顺时针的;
如果ABxAC=0,则说明三点共线。
#include<stdio.h>
int main()
{int x1,y1,x2,y2,x3,y3;while(~scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3)&&(x1+y1+x2+y2+x3+y3)){if((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1)>0)printf("0\n"); //逆时针else printf("1\n");  //顺时针}return 0;
}

nyoj-68--三点顺序相关推荐

  1. NYOJ 题目68 三点顺序

    三点顺序 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断A,B,C是顺时针给出的还是逆时针 ...

  2. nyoj68三点顺序

    三点顺序 时间限制:1000 ms  给你不共线的三个点A,B,C的坐标,,现在让你判断A,B,C是顺时针给出的还是逆时针给出的? 图1:顺时针给出          图2:逆时针给出 <图1& ...

  3. 数据结构个人笔记 第三课 顺序表和单链表

    数据结构个人笔记 第三课 顺序表和单链表 顺序表的基本操作 插入元素 删除元素 顺序表查找元素 顺序表更改元素 本节总结代码 单链表 链表的节点 头节点.头指针和首元结点 链表的创建(初始化) 本节总 ...

  4. 保留两位小数有右对齐c语言,[理学]3 C语言 第三章顺序控制语句.ppt

    [理学]3 C语言 第三章顺序控制语句 1.C语句分五类: 控制语句.函数语句.表达式语句.空语句.复合语句. 其中控制语句又有9条. 2.结构化程序的三种基本结构: 顺序结构.分支结构.循环结构 3 ...

  5. 计算机考试考试顺序,科目三考试顺序是先到先考吗

    科目三考试顺序三四线城市都是按签到排的,有的正序考的,有的地方是倒叙考的.科目三安全文明驾驶常识考试内容包括:安全文明驾驶操作要求.恶劣气象和复杂道路条件下的安全驾驶知识.爆胎等紧急情况下的临危处置方 ...

  6. 深入理解JMM(Java内存模型) --(三)顺序一致性

    数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争.Java内存模型规范对数据竞争的定义如下: 在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序. 当代码 ...

  7. 数据结构线性表的逻辑结构(三)顺序表基本操作的实现

    一. 实验目的 1. 掌握线性表的逻辑结构: 2. 顺序表基本操作的实现: 3. 掌握利用C/C++编程语言实现数据结构的编程方法: 4. 通过上机时间加强利用数据结构解决实际应用问题的能力: 二.  ...

  8. 三点顺序(计算几何)

    坐标中给出三点,求顺时针或逆时针 分析:利用矢量叉积判断是逆时针还是顺时针. 设A(x1,y1),B(x2,y2),C(x3,y3),则三角形两边的矢量分别是: AB=(x2-x1,y2-y1), A ...

  9. 9行代码AC——HDU 6857 -Clockwise or Counterclockwise(2020 Multi-University Training Contest 8)(判断三点顺序)

    励志用尽量少的代码做高效表达 Problem Description It is preferrable to read the pdf statment. After some basic geom ...

  10. nyoj 21 三个水杯 BFS

    三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没有标识 ...

最新文章

  1. WPF中Expander与ListBox(ItemsControl)嵌套中的问题
  2. [译] 学习 JavaScript:9 个常见错误阻碍你进步
  3. 关于html标签元素的data-*属性
  4. iOS应用横竖屏切换
  5. python3.7输出语句_python3.4用循环往mysql5.7中写数据并输出的实现方法
  6. 安装完VS2010之后再安装VS2012以后,发现VS工程编译出现--fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
  7. 三菱plc编程软件gx+developer安装教程
  8. 用C语言求解合式公式的主合取范式和主析取范式
  9. 英雄联盟加载的时候特卡,排查记录:win10那些破玩意
  10. 报表工具选型对比系列 - 多源关联性能
  11. 计算机扩大C盘分区容量,教你在保留数据的情况下,如何把C盘容量无限扩大!...
  12. 迪斯科算法_为什么迪斯科极乐世界如此可重播
  13. html弄出油画效果,使用HTML5 Canvas实现仿PS图像油画滤镜特效
  14. 爱快路由器使用L2TP线路做出口
  15. C#锐利体验 第十六讲 映射
  16. javascript 高级写法
  17. 【NodeJs-5天学习】第四天存储篇① ——安装使用mysql 8.0
  18. socket编程之 accept函数的理解
  19. 深度学习网络不收敛的原因分析总结
  20. SQL Server 2008 (2008 R2) 清理日志方法

热门文章

  1. 案例册下载 | 10+ 行业标杆企业实践集锦,为你开启数据驱动之旅
  2. SESSION存储于redis(CI3)
  3. PyQt5 Introduction and components
  4. 基于Linux C的socketEthereal程序和Package分析 (一个)
  5. 新兴短距离无线通信技术ZigBee入门到进阶
  6. 关于三层交换机的路由处理方式和路由器的路由处理方式的不同
  7. How to apply for the PG studies as a UG
  8. 如何获得春季周? for investment banking
  9. 研究生的研究人员发展课程
  10. bike with a famous logo