#include <stdio.h>
#define PI 3.14159
#define LIMIT 100.0
#define MSG "passed!"
#define ERR_PRN printf("exit of range pass!\n")
int main(void){
double radius, area;
printf("input radius (under 10) : ");
scanf("%lf", &radius);
area = PI * radius * radius;
if (area > LIMIT) ERR_PRN;
else printf("circle area : %.2lf (%s)\n", area, MSG);
return 0;
}
### 코드의 주요 부분 설명
- `#define PI 3.14159`은 원주율 PI의 값을 정의하는 매크로입니다.
- `#define LIMIT 100.0`은 면적의 상한값을 정의하는 매크로입니다. 이 예제에서는 원의 면적이 100을 초과하는 경우 특정 조치를 취합니다.
- `#define MSG "passed!"`는 면적이 상한값 이하일 때 출력할 메시지를 정의하는 매크로입니다.
- `#define ERR_PRN printf("exit of range pass!\n")`는 면적이 상한값을 초과했을 때 출력할 메시지를 위한 매크로입니다. 이 매크로는 `printf` 함수 호출을 포함하고 있습니다.
### 프로그램의 실행 흐름
1. 사용자로부터 원의 반지름을 입력받습니다. 입력은 `scanf("%lf", &radius);`를 통해 이루어집니다.
2. 입력받은 반지름을 사용하여 원의 면적을 계산합니다. 면적 계산에는 `area = PI * radius * radius;` 공식이 사용됩니다.
3. 계산된 면적이 `LIMIT` (이 예제에서는 100.0)을 초과하는지 확인합니다. 면적이 상한값을 초과하면 `ERR_PRN;` 매크로가 호출되어 "exit of range pass!\n" 메시지가 출력됩니다.
4. 면적이 상한값 이하인 경우, 원의 면적과 "passed!" 메시지가 출력됩니다. 출력에는 `printf("circle area : %.2lf (%s)\n", area, MSG);`가 사용됩니다.
### 주의
프로그램에서 요구하는 반지름 입력은 "under 10"으로, 사용자에게 반지름 10 이하의 값을 입력하라는 안내가 있습니다. 하지만, 실제로는 입력받은 반지름의 면적이 `LIMIT`을 초과하는지만 검사하며, 반지름 자체의 크기 제한은 코드에 구현되어 있지 않습니다. 사용자가 매우 큰 반지름을 입력할 경우, 계산된 면적이 `LIMIT`을 초과하여 "exit of range pass!\n" 메시지가 출력됩니다.
'개념 > 혼자 공부하는 C언어' 카테고리의 다른 글
chapter 19) 메크로 함수를 사용한 프로그램 (0) | 2024.10.21 |
---|---|
chapter 19) #과 ##을 사용한 메크로 함수 (0) | 2024.10.20 |
chapter 19) #pragma 지시자 (0) | 2024.10.18 |
chapter 19) #if, #ifdef, #else , #endif 를 사용한 조건부 컴파일 (2) | 2024.10.17 |
chapter 18) 표준 입출력 스트림을 사용한 문자열 입력 (1) | 2024.10.16 |