본문 바로가기

Programming/VC++

[C] sqrt를 사용한 거리 구하기

출처 : 네이버 지식인(http://kin.naver.com/db/detail.php?dir_id=10104&docid=566419)

두 개의 점 (7, 12)와 (3, 9) 사이의 거리를 계산하는 C++ 프로그램을 작성하라. 두 개의 점 (x1, y1)과 (x2, y2) 사이의 거리는 거리 = sqrt([x1-x2]2+[y1-y2]2)이다. 이 프로그램을 이용하여 반복적으로 (-12, -15)와 (22, 5)의 거리를 구하라.

이런 문제인데 sqrt를 어떻게 사용해야 하는지 모르겠습니다. C++이구요.

x1, y1을 입력받고
x2, y2를 입력받고
거리를 출력해주는 형태입니다.

어떻게 풀어야 할까요?

re: C++에서 sqrt를 사용한 거리 구하기

kbrave77 (2004-04-19 16:09 작성)1대1 질문하기

신고신고|이의제기이의제기

질문자 평
모두 감사합니다.

#include < iostream.h >
#include < math.h >

void main()
{
int i,x,y,x2,y2,z;
double v;
for(i=1;i<=2;i++)
{
cout << "시작점의 좌표?\n";
cout << "x=>";
cin >> x;
cout << "y=>";
cin >> y;

cout << "끝점의 좌표?\n";
cout << "x=>";
cin >> x2;
cout << "y=>";
cin >> y2;

z=(x-x2)*(x-x2)+(y-y2)*(y-y2);
v=sqrt(z);
cout << '(' << x << ',' << y << ")와 (" << x2 << ',' << y2 << ")의 거리는 " << v << '\n';
}

}


c++ type을 원하셔서

그렇게 했습니다.

님이 c type으로 하시길 원하신다면

cout 은 pritnf()로

cin 은 scanf()로 바꿔 주시면 됩니다.

입력받아 출력하는 반복은 2번만 했습니다.

더 반복하길 원하신다면 횟수를 바꿔 주세요

sqrt는 math.h 에서 정의 되어 있는 수학함수입니다.

sqrt()의 매개변수는 상수 여야 하기때문에

식을 넣으면 안되고 항상 계산된 결과를 넣어주셔야 합니다.

그럼 double형의 값을 리턴하죠

더 궁금하신점이 있다면 쪽지 주세요

top

피타고라스의 법칙

nevernding (2004-04-19 15:57 작성)1대1 질문하기

신고신고|이의제기이의제기

안녕하세요?

수학공식에서 sqrt([x1-x2]2 + [y1-y2]2)를 C언어로 풀어써보면

sqrt( (x1*x1 - x2*x2) + (y1*y1 - y2*y2) );

로 나타낼 수 있습니다. 반복적으로 사용자의 입력을 받은다음 거리를 구하는 코드라면 이런식으로 사용할 수 있겠죠.

// math.h 파일을 include 해야 합니다.

int x1, x2, y1, y2;
int result;


while( 1 )
{
    printf( "첫번째 좌표 입력 : " );
    scanf( "%d %d", &x1, &y1 );
    printf( "두번째 좌표 입력 : " );
    scanf( "%d %d", &x2, &y2 );

    int diffX = x2 - x1;
    int diffY = y2 - y1;
    result = sqrt( diffX * diffX + diffY * diffY );
    printf
( "두 점 사이의 거리 : %d \n", result );
}

top

re: C++에서 sqrt를 사용한 거리 구하기

junnet1 (2004-04-19 15:58 작성)1대1 질문하기

신고신고|이의제기이의제기

float x1, y1, x2, y2;
가 있으면...

float distance;

distance = sqrt( pow((x2-x1), 2) + pow((y2-y1), 2) );

하면 되죠.

pow는 제곱승 구하는 함수고요.

math.h만 include하면 되는 것으로 알고 있습니다.

참고하세요.