当前位置:   article > 正文

OpenJudge百炼习题解答(C++)--题4072:判断多个点是否在同一直线_c++如何判断在一条直线上

c++如何判断在一条直线上

题:

总时间限制: 
1000ms 
内存限制: 
65536kB
描述

N(1<=n<=100)< span="">个互不重合的点,并给出它们的坐标(xi,yi),问这些点是否在同一直线上。

输入
第一行是测试的组数T(1<=T<=100),其后是T组数据,每组数据第一行是该组数据点的数量N,后面跟着N行,每行代表一点的坐标,由两个数字构成,这两个数字之间由空格隔开。
输出
有T行,每行对应输入的一组数据,如果该组数据中的点在同一直线上,则该行输出True,否则输出False。
样例输入
1
3
0 0
2 2
1 1
样例输出
True

解:

  1. #include<iostream>
  2. #include<stdio.h>
  3. using namespace std;
  4. int main()
  5. {
  6. int T;
  7. cin>>T;
  8. int True[T];
  9. double a[T][1000];
  10. double b[T][1000];
  11. int c[T];
  12. for(int i=0;i<T;i++)
  13. {
  14. cin>>c[i];
  15. for(int j=0;j<c[i];j++)
  16. {
  17. cin>>a[i][j]>>b[i][j];
  18. }
  19. }
  20. for(int i=0;i<T;i++)
  21. {
  22. True[i]=1;
  23. for(int h=1;h<c[i];h++)
  24. {
  25. if(c[i]>2&&(b[i][1]-b[i][0])*(a[i][h]-a[i][0])!=(b[i][h]-b[i][0])*(a[i][1]-a[i][0])){
  26. True[i]=0;
  27. // cout<<a[i][0]*b[i][h]<<"and"<<a[i][h]*b[i][0]<<endl;
  28. break;
  29. }
  30. }
  31. if(True[i]==1)
  32. {
  33. cout<<"True"<<endl;
  34. }
  35. else
  36. {
  37. cout<<"False"<<endl;
  38. }
  39. }
  40. return 0;
  41. }


推荐文章:那些年,做的几个应用


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/380558?site
推荐阅读
相关标签
  

闽ICP备14008679号