728x90
반응형
1. 답
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
struct Point2D {
int x;
int y;
};
int main()
{
struct Point2D p[4];
double length = 0.0f;
scanf("%d %d %d %d %d %d %d %d",
&p[0].x, &p[0].y, &p[1].x, &p[1].y, &p[2].x, &p[2].y, &p[3].x, &p[3].y
);
for (int i = 0;i<sizeof(p)/sizeof(p[0])-1; i++)
{
length += sqrt(pow(abs(p[i].x - p[i + 1].x), 2) + pow(abs(p[i].y - p[i + 1].y), 2));
}
printf("%f\n", length);
return 0;
}
2. 결과
3. 정리
거리 구하는 식은 피타고라스의 정리를 이용합니다. 점과 점 사이의 거리를 구하는 계산이 반복되므로 반복문을 사용한다면 면 수월할 것이라고 예상하고 작성했습니다. sizeof(p)는 구조체의 p의 크기를 뜻하므로 8*4=32바이트가 됩니다. sizeof(p[0])는 그중 1개이므로 8바이트가 되며, 계산식 sizeof(p)/sizeof(p[0])=4가 됩니다. 그러나 점은 총 3개뿐이므로 계산식 뒤에 -1을 넣어주어 3을 만들어 줍니다.
4. 비고
- 코딩 도장 심사문제는 아래 링크 바로가기를 눌러주세요. 간단한 가입 진행 후 이용 가능하므로 참고 부탁드립니다.
- 코딩 도장 문제 링크 바로가기 : https://dojang.io/mod/quiz/attempt.php?attempt=1833873&cmid=451
728x90
반응형
댓글