출처 : 네이버 지식인(
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를 입력받고
거리를 출력해주는 형태입니다.
어떻게 풀어야 할까요?
#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형의 값을 리턴하죠
더 궁금하신점이 있다면 쪽지 주세요
안녕하세요?
수학공식에서 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 );
}
float x1, y1, x2, y2;
가 있으면...
float distance;
distance = sqrt( pow((x2-x1), 2) + pow((y2-y1), 2) );
하면 되죠.
pow는 제곱승 구하는 함수고요.
math.h만 include하면 되는 것으로 알고 있습니다.
참고하세요.