C 언어로 다각형 둘레 계산하기

CBeginner
지금 연습하기

소개

이 실습에서는 C 언어로 다각형의 둘레를 계산하는 방법을 배웁니다. 이 실습은 다음 단계를 포함합니다: 변의 길이를 배열에 읽어 들이기, 모든 변의 길이를 합하기, 그리고 둘레를 출력하기. 사용자가 다각형의 변의 길이를 입력하고, 이를 배열에 저장한 다음, 모든 변의 길이를 더하여 둘레를 계산하는 프로그램을 만들 것입니다.

이 실습은 C 언어로 다각형 둘레 계산을 이해하고 구현하는 데 도움이 되는 단계별 가이드와 예제 코드를 제공합니다. 실습을 마치면 최대 10 개의 변을 가진 다각형의 둘레를 계산할 수 있는 작동 가능한 프로그램을 갖게 될 것입니다.

변의 길이를 배열에 저장하기

이 단계에서는 다각형의 둘레를 계산하기 위해 변의 길이를 C 언어의 배열에 저장하는 방법을 배웁니다. 사용자가 다각형의 변의 길이를 입력하고 이를 배열에 저장하는 프로그램을 만들 것입니다.

먼저 프로젝트 디렉토리에 C 소스 파일을 생성합니다.

cd ~/project
nano polygon_perimeter.c

이제 다음 코드를 입력합니다.

#include <stdio.h>

#define MAX_SIDES 10

int main() {
    float sides[MAX_SIDES];
    int num_sides;

    // 사용자에게 변의 개수를 입력하도록 요청
    printf("Enter the number of sides in the polygon (max %d): ", MAX_SIDES);
    scanf("%d", &num_sides);

    // 변의 길이 입력
    printf("Enter the lengths of the sides:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("Side %d length: ", i + 1);
        scanf("%f", &sides[i]);
    }

    // 입력된 변의 길이 출력
    printf("\nSide lengths entered:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("Side %d: %.2f\n", i + 1, sides[i]);
    }

    return 0;
}

프로그램을 컴파일합니다.

gcc -o polygon_perimeter polygon_perimeter.c

프로그램을 실행합니다.

./polygon_perimeter

예시 출력:

Enter the number of sides in the polygon (max 10): 4
Enter the lengths of the sides:
Side 1 length: 5.5
Side 2 length: 6.2
Side 3 length: 4.3
Side 4 length: 7.1

Side lengths entered:
Side 1: 5.50
Side 2: 6.20
Side 3: 4.30
Side 4: 7.10

코드의 주요 부분을 살펴보겠습니다.

  • #define MAX_SIDES 10은 변의 최대 개수를 설정합니다.
  • float sides[MAX_SIDES]는 변의 길이를 저장할 배열을 만듭니다.
  • scanf()는 변의 개수와 각 변의 길이를 읽어들입니다.
  • for 루프는 변의 길이를 입력하고 출력합니다.

모든 변의 길이 합하기

이 단계에서는 다각형의 모든 변의 길이를 합하여 둘레를 계산하는 이전 프로그램을 수정합니다.

기존 파일을 엽니다.

cd ~/project
nano polygon_perimeter.c

둘레 계산을 포함하여 코드를 업데이트합니다.

#include <stdio.h>

#define MAX_SIDES 10

int main() {
    float sides[MAX_SIDES];
    int num_sides;
    float perimeter = 0.0;

    // 사용자에게 변의 개수를 입력하도록 요청
    printf("Enter the number of sides in the polygon (max %d): ", MAX_SIDES);
    scanf("%d", &num_sides);

    // 변의 길이 입력
    printf("Enter the lengths of the sides:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("Side %d length: ", i + 1);
        scanf("%f", &sides[i]);
    }

    // 모든 변의 길이를 합하여 둘레 계산
    for (int i = 0; i < num_sides; i++) {
        perimeter += sides[i];
    }

    // 변의 길이와 둘레 출력
    printf("\nSide lengths entered:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("Side %d: %.2f\n", i + 1, sides[i]);
    }

    // 계산된 둘레 출력
    printf("\nPerimeter of the polygon: %.2f\n", perimeter);

    return 0;
}

업데이트된 프로그램을 컴파일합니다.

gcc -o polygon_perimeter polygon_perimeter.c

프로그램을 실행합니다.

./polygon_perimeter

예시 출력:

Enter the number of sides in the polygon (max 10): 4
Enter the lengths of the sides:
Side 1 length: 5.5
Side 2 length: 6.2
Side 3 length: 4.3
Side 4 length: 7.1

Side lengths entered:
Side 1: 5.50
Side 2: 6.20
Side 3: 4.30
Side 4: 7.10

Perimeter of the polygon: 23.10

이 단계의 주요 변경 사항:

  • 변의 길이 합계를 저장하기 위한 perimeter 변수 추가
  • 모든 변을 더하여 둘레를 계산하는 새로운 for 루프 도입
  • 계산된 둘레를 출력하는 출력 문 추가

둘레 출력

이 마지막 단계에서는 다각형 둘레 계산 프로그램을 개선하여 입력 유효성 검사를 위한 형식화된 출력과 오류 처리를 추가합니다.

기존 파일을 엽니다.

cd ~/project
nano polygon_perimeter.c

개선된 입력 유효성 검사와 형식화된 출력으로 코드를 업데이트합니다.

#include <stdio.h>

#define MAX_SIDES 10
#define MIN_SIDES 3

int main() {
    float sides[MAX_SIDES];
    int num_sides;
    float perimeter = 0.0;

    // 입력 유효성 검사를 포함한 변의 개수 입력
    do {
        printf("Enter the number of sides in the polygon (between %d and %d): ",
               MIN_SIDES, MAX_SIDES);
        scanf("%d", &num_sides);

        if (num_sides < MIN_SIDES || num_sides > MAX_SIDES) {
            printf("변의 개수가 잘못되었습니다. 다시 입력하세요.\n");
        }
    } while (num_sides < MIN_SIDES || num_sides > MAX_SIDES);

    // 유효성 검사를 포함한 변의 길이 입력
    printf("Enter the lengths of the sides:\n");
    for (int i = 0; i < num_sides; i++) {
        float side_length;
        do {
            printf("Side %d 길이 (양수여야 함): ", i + 1);
            scanf("%f", &side_length);

            if (side_length <= 0) {
                printf("변의 길이가 잘못되었습니다. 양수를 입력하세요.\n");
            } else {
                sides[i] = side_length;
                break;
            }
        } while (1);
    }

    // 모든 변의 길이를 합하여 둘레 계산
    for (int i = 0; i < num_sides; i++) {
        perimeter += sides[i];
    }

    // 결과의 형식화된 출력
    printf("\n--- 다각형 둘레 계산 ---\n");
    printf("변의 개수: %d\n", num_sides);

    printf("\n변의 길이:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("변 %d: %.2f\n", i + 1, sides[i]);
    }

    printf("\n둘레 계산:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("%s%.2f", (i > 0) ? " + " : "", sides[i]);
    }
    printf(" = %.2f\n", perimeter);

    printf("\n최종 둘레: %.2f\n", perimeter);

    return 0;
}

업데이트된 프로그램을 컴파일합니다.

gcc -o polygon_perimeter polygon_perimeter.c

프로그램을 실행합니다.

./polygon_perimeter

예시 출력:

Enter the number of sides in the polygon (between 3 and 10): 4
Enter the lengths of the sides:
Side 1 length (must be positive): 5.5
Side 2 length (must be positive): 6.2
Side 3 length (must be positive): 4.3
Side 4 length (must be positive): 7.1

--- 다각형 둘레 계산 ---
변의 개수: 4

변의 길이:
변 1: 5.50
변 2: 6.20
변 3: 4.30
변 4: 7.10

둘레 계산:
5.50 + 6.20 + 4.30 + 7.10 = 23.10

최종 둘레: 23.10

이 단계의 주요 개선 사항:

  • 변의 개수와 변의 길이에 대한 입력 유효성 검사 추가
  • 더 자세하고 형식화된 출력 생성
  • 단계별 둘레 계산 표시 포함
  • 최소 및 최대 변 제약 조건 준수

요약

이 실험에서는 다각형의 변 길이를 배열에 읽어 들이고, 모든 변의 길이를 합하여 둘레를 계산하고, 결과를 출력하는 방법을 배웁니다. 먼저 사용자에게 변의 개수와 각 변의 길이를 입력하도록 요청하고, 변의 길이를 배열에 저장합니다. 그런 다음, 모든 변의 길이를 합하여 다각형의 둘레를 계산합니다. 마지막으로 계산된 둘레를 출력합니다.

핵심 단계에는 사용자 입력을 읽기 위한 scanf() 사용, 변의 길이를 배열에 저장, 배열을 반복하여 변의 길이를 합산, 최종 결과를 출력하는 것이 포함됩니다.