Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 선분의 중점(Midpoint) 구하기: 개념부터 코드까지

이 문제에서는 한 선분의 시작점 A와 끝점 B가 주어지며, C++을 이용해 이 선분의 중점(midpoint)을 구하는 프로그램을 작성하는 것이 목표입니다.

문제 설명

시작점과 끝점이 각각 A(x1, y1), B(x2, y2)로 주어진 선분이 있고, 우리는 이 선분의 중점을 찾아야 합니다.

예제로 문제 이해하기

입력:

a(x1, y1) = (4, -5)
b(x2, y2) = (-2, 6)

출력:

(1, 0.5)

설명:

x좌표의 중점 = (x1 + x2) / 2 = (4 + (-2)) / 2 = 1
y좌표의 중점 = (y1 + y2) / 2 = (-5 + 6) / 2 = 0.5

해결 접근 방법

이 문제를 해결하는 가장 간단한 방법은 기하학에서 사용되는 선분의 중점 공식을 활용하는 것입니다. 공식은 다음과 같습니다.

중점 = ( ((x1 + x2) / 2), ((y1 + y2) / 2) )

즉, 두 끝점의 x좌표끼리 평균을 내고, y좌표끼리 평균을 내면 그 값이 곧 선분의 중점 좌표가 됩니다. 시간 복잡도는 단순 연산만 수행하므로 O(1)로 매우 효율적입니다.

C++ 구현 예제

다음은 위 해결 방법의 동작을 보여주는 프로그램입니다.

#include<iostream>
using namespace std;

int main() {
    float point[2][2] = {{-4, 5}, {-2, 6}};
    float midX = (float)((point[0][0] + point[1][0]) / 2);
    float midY = (float)((point[0][1] + point[1][1]) / 2);
    cout << "선분의 중점은 (" << midX << " , " << midY << ")";
    return 0;
}

실행 결과:

선분의 중점은 (-3 , 5.5)

코드 설명

  • 2×2 크기의 배열 point에 두 끝점의 x, y 좌표를 저장합니다.
  • midXmidY에는 각각 x좌표의 평균과 y좌표의 평균을 계산하여 저장합니다.
  • 정수 나눗셈으로 인한 소수점 손실을 방지하기 위해 결과를 float형으로 캐스팅합니다.
  • 마지막으로 계산된 중점 좌표를 화면에 출력합니다.

이처럼 중점 공식만 알면 두 점이 음수 좌표를 포함하더라도 손쉽게 선분의 중점을 구할 수 있습니다.