컴공생의 다이어리
[c++] 두 지점 A, B 사이에 위치할 수 있는 C 본문
문제
두 지점 A와 B의 위치 정보와 A와 B의 각 지점에서 지점 C까지의 거리가 주어지면 지점 C가 위치 할 수있는 좌표의 수를 계산한다. 위치 정보는 좌표로 표시된다. A와 B의 좌표가 (x1, y1), (x2, y2)이면 A에서 C까지의 거리가 d1이고 B에서 C까지의 거리가 d2이면 x1, y1, d1, x2 , y2, d2의 입력의 형식은 다음과 같다. 첫 번째 줄에 테스트 할 횟수를 입력한다. 다음 줄부터 위에 기록 된만큼 테스트 케이스를 작성한다. C가 위치 할 수있는 좌표가 무한대이면 출력은 1이다.
코드
#include<iostream>
#include <cmath>
using namespace std;
typedef struct{
int x; //x = x cordiante
int y; //y = y cordiante
int dis; //dis = distance
}dot;
double DISTANCE(double x1, double y1, double x2, double y2){ //distance between dot 1 and dot 2
return sqrt((double)((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)));
}
int result(dot dot1, dot dot2) {
int n;
double distance = DISTANCE(dot1.x, dot1.y, dot2.x, dot2.y);
if (abs(dot1.dis - dot2.dis) > distance) { // = no intersection
n = 0;
}
else if (abs(dot1.dis - dot2.dis) == distance) { // = 1 intersection or Infinite intersection
if (dot1.dis == 0 && dot2.dis == 0) {
n = 1;
}
else if (dot1.dis == dot2.dis) {// = Infinite intersection
n = -1;
}
}
else if (abs(dot1.dis - dot2.dis) < distance && distance < (dot1.dis + dot2.dis)){ // = 2 intersection
n = 2;
}
else if (distance == (dot1.dis + dot2.dis)){ // = 1 intersection
n = 1;
}
else if (distance > (dot1.dis + dot2.dis)){ // = no intersection
n = 0;
}
return n;
}
int main(){
int test; // the size of test
int *arr;
while (1){
cout << "test할 횟수 : ";
cin >> test;
if (test > 0)
break;
cout << "1이상 숫자만 가능합니다!" << endl << endl;
}
arr = new int[test];
dot dot1, dot2;
for (int i = 0; i < test; i++){
//first dot
cin >> dot1.x;//x1
cin >> dot1.y;//y1
cin >> dot1.dis;//dis1
//second dot
cin >> dot2.x;//x2
cin >> dot2.y;//y2
cin >> dot2.dis;//dis2
arr[i] = result(dot1, dot2);
}
for (int i = 0; i < test; i++){
cout << arr[i] << endl;
}
delete[]arr;
return 0;
}
출력결과
728x90
'Development > C & C++' 카테고리의 다른 글
[c++] 강력한 패스워드 만들기 (0) | 2021.02.17 |
---|---|
[c++] 숫자로 주어진 시간을 텍스트로 변환 (0) | 2021.02.15 |
[c++] 입력받은 문자열에서의 특정 문자 빈도 수 (0) | 2021.02.13 |
[c++] 2차 함수의 최대 값과 최소값 찾기 (0) | 2021.02.12 |
[c++] 정보 추가, 삭제, 검색 및 정렬 프로그램 (0) | 2021.02.11 |
Comments