본문 바로가기

C언어/공부한 것들

[혼자 공부하는 C언어] BMI 구하기

문제

 

 

코드
#include <stdio.h>	
	
int	main() {
	
	double kg, cm, BMI;
	
	printf("몸무게(kg)와 키(cm) 입력 : ");
	scanf("%lf %lf", &kg, &cm);

	cm = cm / 100.0; //cm를 m단위로 맞추기 위해 100으로 나눠줌
	BMI = kg / (cm * cm);
	
	printf("BMI는 : %.1lf입니다.\n", BMI);
	printf((BMI >= 20.0 && BMI < 25.0) ? "표준입니다." : "체중관리가 필요합니다.");

	return 0;
}

 

더보기

몸무게(kg)와 키(cm) 입력 : 66
185.6
BMI는 : 19.2입니다.
체중관리가 필요합니다.

 

해석

3행 : 실수형으로 kg, cm, BMI를 초기화

6행 : 문제에 키를 m단위로 계산한다는 조건이 있기 때문에 100 나눔으로 m단위로 만들어줌

7행 : BMI구하는 공식에 따라 몸무게를 키의 제곱근으로 나눠줌

9행 : 조건 연산자를 이용하여 받은 BMI이 20이상이고 25미만인 조건이 참이면 좌측, 거짓이면 우측 출력

 

느낀점

코드를 작성하고 아무리해도 출력이 "표준입니다." 출력이 돼서 검색을 해보니 키를 미터 단위로 설정하는 것을 안해서 그랬던 것이었다.

근데 다른 사람들은 9행 출력을

((BMI >= 20.0) && (BMI > 25.0)) ? printf("표준입니다.") : printf("체중관리가 필요합니다.");

이런 식으로 사용하던데 둘 다 가능한 것인지 다른 사람들이 한 것이 맞는 것인지 궁금하다...

혹시 보시고 아시는 분들.. 말씀 좀..ㅎ

 

추가

이런 부분이 궁금해져서 학교 교수님에게 여쭤보니 보통 실무에서는 명확한 조건을 좋아한다고 하셨다.

작업 중인 코드를 보여주셨는데 if를 사용하셔서 하나하나 조건을 세세하게 적어두셨다.

많은 경우의 수를 다 적어놓으신 걸 보고 이러면 프로그램이 너무 무거워지지 않냐고 여쭤보니

무거워지지만 에러가 안 떠서 컴파일러 입장에서는 오히려 좋다고 하셨다..

그래서 if문으로 코드를 조금 수정해보았다.

#include <stdio.h>	
	
int	main() {
	
	double kg, cm, BMI;
	
	printf("몸무게(kg)와 키(cm) 입력 : ");
	scanf("%lf %lf", &kg, &cm);

	cm = cm / 100.0;
	BMI = kg / (cm * cm);
	
	printf("BMI는 : %.1lf입니다.\n", BMI);
	if (BMI >= 20.0 && BMI < 25.0) {
		printf("표준입니다.");
	}
	else {
		printf("체중관리가 필요합니다.");
	}
	
	return 0;
}