직선 ax+by+c = 0이 점 (x0, y0)를 지날 때, 점과 직선 사이의 거리는 다음과 같습니다.
<math.h> 헤더 파일을 포함하면, 제곱근을 구해 float 타입의 값으로 반환하는 함수인 sqrtf를 사용할 수 있습니다.
sqrtf(9)는 3.000000이고, sqrtf(16)은 4.000000입니다.
인자로 식이 들어가도 상관 없으니 sqrtf(3.5*3.5)=3.50000이기도 하죠.
위 사실들을 참고하여, 직선과 점이 주어질 때,
점과 직선 사이의 거리를 구하는 프로그램을 작성해주세요.
단, 모든 입출력은 실수값을 입출력하도록 하고, 출력할 때에는 소수점 아래 두 번째 자릿수까지만 출력하도록 해주세요.
소스 이름은 "example2. 점과 직선 사이의 거리 구하기.c"로 하시기 바랍니다.
[출력 예시]
직선의 방정식을 "ax+by+c=0" 꼴로 입력해주세요. : 3x+4y+5=0
점의 위치를 "a,b" 꼴로 입력해주세요. : 6,3
점과 직선 사이의 거리는 7.00입니다.
(파랑색은 입력값입니다.)
더보기
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c, x, y;
printf("직선의 방정식을 \"ax+by+c=0\" 꼴로 입력해주세요. : ");
scanf_s("%fx+%fy+%f=0", &a, &b, &c);
printf("점의 위치를 \"a,b\" 꼴로 입력해주세요. : ");
scanf_s("%f,%f", &x, &y);
printf("점과 직선 사이의 거리는 %.2f입니다.\n", (a * x + b * y + c) / sqrtf(a * a + b * b));
}
|
cs |
'C | C++ > C' 카테고리의 다른 글
[C] example3. 게임 캐릭터 인포메이션 만들기 (0) | 2022.07.06 |
---|---|
[C] example1. 문자를 입력받아 아스키코드로 출력하기 (0) | 2022.07.06 |
[C] 6. printf를 좀 더 잘 써봅시다. <필드폭 및 소수점 조정, 이스케이프 문자> (1) | 2022.07.05 |
[C] 5. 입출력은 프로그램의 근본입니다. <printf, scanf> (0) | 2022.07.05 |
[C] 4. 변수의 최댓값을 넘기면 무슨 일이 일어날까요? <오버플로우, 언더플로우, 랩 어라운드> (0) | 2022.07.03 |