본문 바로가기
[개발자 로드맵]/C

[C언어 코딩 도장 심사문제 답] 53.6_선의 길이 구하기

by Ramrider 2022. 7. 8.
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
반응형

댓글