숙제 4 (선분 교차)
두개의선분이서로공통인점을가지고있을때, 이두선분은서로교차한다고정의하며, 그공통인점을교차점이라고부른다.또한, 두선분이교차할때, 그교차점이두선분의어느꼭지점에도속하지않을경우에이두선분은“완전교차”한다고정의한다.따라서, 완전교차하지않는두선분이교차하는경우는두선분의교차점이두선분의어느한꼭지점을포함하는경우이다. 이와같이두선분이서로교차하지만완전교차하지않는경우를특별히두선분이접해있다고정의한다.
2차원평면상에X-좌표축에평행한선분과Y-좌표축에평행한두개의선분이주어졌을때, 이두개의선분이서로교차하는지를판별하는프로그램을작성하시오
예시:
#include<iostream>
using namespace std;
void swap(int *x1, int *y1, int *x3, int *y3){
int temp;
temp=*x1;
*x1=*x3;
*x3=temp;
temp=*y1;
*y1=*y3;
*y3=temp;
}
int main(){
int x1,x2,x3,x4;
int y1,y2,y3,y4;
cin>>x1>>y1>>x2>>y2;
cin>>x3>>y3>>x4>>y4;
if(x1!=x2){
swap(&x1,&y1,&x3,&y3);
swap(&x2,&y2,&x4,&y4);
}
if(y1==y3 ||y2==y3) printf("2");
else if(x1==x3||x1==x4) printf("2");
else if(((x3<x4)&&(x3<x1&&x4>x1))||((x3>x4)&&(x4<x1&&x3>x1))){
if(((y1<y2)&&(y1<y3&&y2>y3))||((y1>y2)&&(y2<y3&&y1>y3))) printf("1");
else printf("0");
}
else printf("0");
cout<<endl;
return 0;
}
'코딩테스트' 카테고리의 다른 글
[C++] 삼각형 면적 (0) | 2021.06.27 |
---|---|
[C++] 호텔 (0) | 2021.06.27 |
[C++] 사각형과 점 과의 거리 (0) | 2021.06.27 |
[C++] 삼각형의 종류 (2) (0) | 2021.06.27 |
[C++] 삼각형의 종류 (0) | 2021.06.27 |