C++编程!已知矩形,判断输入的点是不是包含在该矩形内。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++编程!已知矩形,判断输入的点是不是包含在该矩形内。相关的知识,希望对你有一定的参考价值。

Description
对于一个已知的矩形,判断输入的点是否包含在该矩形内。
矩形用对角线上的两个点来定义(左下角点和右上角点)。
已知矩形的左下角点为(1,1),右上角点为(5,5)。
要求编写一个函数判断点是否在矩形内,如果在内则返回1,否则返回-1
主函数调用该判断函数,如果返回1则输出in,返回-1则输出out
Input
输入点的个数和每个点的坐标
Output
在矩形内部还是外部
Sample Input
3
1 1
5 5
5 10
Sample Output
in
in
out

请用C++语言解答,感激不尽!

通过已知点矩形对角线顶点形成的角度差来判断,如果差值在大于90度且小于270度,则点在矩形内部,如果角度差等于90度或270度,则已知点在矩形的边上,其他情况在矩形的外面。
下面附一段AutoCAD LISP代码,但愿对你有帮助。
;;;计算三点间角度差
;;;参数: pt0 基点坐标
;;; pt1 第一点坐标
;;; pt2 第二点坐标
;;;
;;;返回值 三点的角度差(单位:弧度)
(defun angle3p (pt0 pt1 pt2 / ang)
(setq ang (- (angle pt0 pt2) (angle pt0 pt1)))
(if (< ang 0)
(setq ang ( ang (* 2 pi))
)
)
ang
)
参考技术A #include<stdlib.h>
#include<stdio.h>
typedef struct
  float x;
  float y;
cordinate;

void judage(cordinate *col,int num)  
  cordinate leftBottom_col,rightTop_col;
  //坐标初始化
  leftBottom_col.x=1.0;
  leftBottom_col.y=1.0;
  rightTop_col.x=5.0;
  rightTop_col.y=5.0;
  for(int i=0;i<num;i++)
     if(col[i].x<=rightTop_col.x && col[i].x>=leftBottom_col.x  &&col[i].y<=rightTop_col.y && col[i].y>=leftBottom_col.y)
       printf("坐标:(%f,%f) : in\\n",col[i].x,col[i].y);
     else
       printf("坐标:(%f,%f) : out\\n",col[i].x,col[i].y);
     
  
   


int main()
  int num;
  printf("输入点的个数:");
  scanf("%d",&num);
  cordinate *col=(cordinate *)malloc(sizeof(cordinate)*num);
  for(int i=0;i<num;i++)
      scanf("%f %f",&col[i].x,&col[i].y);
 
 judage(col,num);
 return 0;

参考技术B 给你个C语言~
你自己改改吧~

#include<stdio.h>

int a[2]=1,1;
int b[2]=5,5;
int c[1000];
int i,j,x,y;

int judge(int h,int k)

if((a[0]<=h&&h<=b[0])&&(a[1]<=k&&k<=b[1]))
return 1;
else
return 0;


void main()

scanf("%d",&i);

for(j=0;j<i;j++)

scanf("%d %d",&x,&y);

if(judge(x,y))
c[j]=1;
else
c[j]=0;

for(j=0;j<i;j++)

if(c[j]==1)
printf("in\n");
else
printf("out\n");

while(1);
参考技术C #include<iostream>
using namespace std;
int judge(int x,int y)

if(x>=1 && x<=5 && y>=1 && y<=5)

return 1;

else

return -1;


int main()

int N;
cin>>N;
while(N--)

int x,y;
cin>>x>>y;
if(judge(x,y)==1)

cout<<"in"<<endl;

else

cout<<"out"<<endl;


return 0;

本回答被提问者采纳

以上是关于C++编程!已知矩形,判断输入的点是不是包含在该矩形内。的主要内容,如果未能解决你的问题,请参考以下文章

用java实现:一个斜向矩形,已知4个点,判断任意一点是不是在区域内?

平面坐标系中 如何判断某一点在一矩形区域内?

怎么判断当前坐标是不是在矩形内(外)部

急急!!! 输入四组坐标判断是不是组成为矩形 C++

编程:判断一个点是否在矩形内部

C语言怎么判断4个坐标坐标是不是构成矩形?