티스토리 뷰

신체 발육 검사 프로그램을 만듭니다.

 

24개월까지 아이의 키를 단계별로 입력하여 표준키와 비교한 후 단계별 키의 차이와 차이의 평균을 출력합니다.

표준키는 다음 기준을 사용하고 전처리 단계에서 매크로명의 정의에 따라 선택되도록 조건부 컴파일로 작성합니다.

 

  • 남자 아이 3단계 발육 표준 키 : 49.4    74.8    85.0
  • 남자 아이 5단계 발육 표준 키 : 49.4    66.3    74.8    79.9    85.0
  • 여자 아이 3단계 발육 표준 키 : 50.1    76.0    86.2
  • 여자 아이 5단계 발육 표준 키 : 50.1    67.6    76.0    81.2    86.2

 

실행 결과는 다음과 같습니다.

//남자 아이 3단계 - 매크로명 MALE이 정의되고 매크로명 LEVEL이 3일 때
단계별 키 입력(3단계) : 50 70 92
단계별 표준키와 차이 : 0.6 -4.8 7.0
차이 평균 : 0.9

//여자 아이 5단계 - 매크로명 FEMALE이 정의되고 매크로명 LEVEL이 5일 때
단계별 키 입력(5단계) : 50 65 70 85 92
단계별 표준키와 차이 : -0.1 -2.6 -6.0 3.8 5.8
차이 평균 : 0.2

다음은 제가 작성한 코드입니다.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define FEMALE 1
#define LEVEL 5

#ifdef MALE
#if LEVEL == 3
double standardHeight[3] = {49.4, 74.8, 85.0};
double height[3];
#elif LEVEL == 5;
double standardHeight[5] = {49.4, 66.3, 74.8, 79.9, 85.0};
double height[5];
#endif
#elif defined FEMALE
#if LEVEL == 3
double standardHeight[3] = {50.1, 76.0, 86.2};
double height[3];
#elif LEVEL == 5
double standardHeight[5] = {50.1, 67.6, 76.0, 81.2, 86.2};
double height[5];
#endif
#endif


int main(void)
{
	printf("단계별 키 입력(%d단계) : ", LEVEL);

	for (int i = 0; i < LEVEL; i++)
	{
		scanf("%lf", height + i);
	}

	printf("단계별 표준키와 차이 : ");

	double sum = 0.0;

	for (int i = 0; i < LEVEL; i++)
	{
		height[i] -= standardHeight[i];
		printf("%7.1lf", height[i]);
		sum += height[i];
	}
	printf("\n차이 평균 : ");
	printf("%.1lf\n", sum / LEVEL);

	return 0;
}

실행결과는 문제의 것과 같습니다.

#define FEMALE 1
#define LEVEL 5

이 부분의 FEMALE과 LEVEL의 치환값을 직접 바꿔주면서 프로그램을 실행했습니다.

#ifdef MALE
#if LEVEL == 3
double standardHeight[3] = {49.4, 74.8, 85.0};
double height[3];
#elif LEVEL == 5;
double standardHeight[5] = {49.4, 66.3, 74.8, 79.9, 85.0};
double height[5];
#endif
#elif defined FEMALE
#if LEVEL == 3
double standardHeight[3] = {50.1, 76.0, 86.2};
double height[3];
#elif LEVEL == 5
double standardHeight[5] = {50.1, 67.6, 76.0, 81.2, 86.2};
double height[5];
#endif
#endif

조건부 전처리 지시자 안에 이중으로 조건부 전처리 지시자를 사용했습니다.

코드를 해석하기는 다소 난해합니다.

조건부 전처리 지시자가 과연 if 조건문처럼 이중 조건문으로도 활용할 수 있을까 궁금해서 한 번 해봤습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함