둘레 출력
이 마지막 단계에서는 다각형 둘레 계산 프로그램을 개선하여 입력 유효성 검사를 위한 형식화된 출력과 오류 처리를 추가합니다.
기존 파일을 엽니다.
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
이 단계의 주요 개선 사항:
- 변의 개수와 변의 길이에 대한 입력 유효성 검사 추가
- 더 자세하고 형식화된 출력 생성
- 단계별 둘레 계산 표시 포함
- 최소 및 최대 변 제약 조건 준수