VISUALSTUDIO의 MFC코딩으로 계산기 코딩질문드려요~

VISUALSTUDIO의 MFC코딩으로 계산기 코딩질문드려요~

작성일 2018.12.20댓글 1건
    게시물 수정 , 삭제는 로그인 필요

제가 MFC대화상자 형식의 코딩으로 비만도계산기를 만들고 있는데 막혀서 질문드립니다.

작동원리는 계산하기 버튼을 클릭했을때, 
계산 옆의 에디트 박스에는  m_cal.Format(_T("%.2f/(%.2f*%.2f)=%.1f"), m_kg,m_m,m_m,m_kg/(m_m*m_m));
즉 84/1.75*1.75 = 27.X 이런식으로 값이 정상적으로 나옵니다.

하지만 
결과 옆의 에디트 박스에 값이 27이므로 비만에 해당할때, "25 ~ 30 비만 입니다." 라는 값이 나와야 하는데 그값이 나오지 않고 정상체중으로 나오고 있습니다.

즉 m_result에 들어가는 if 문을 수정해야 하는것 같은데 해결해주시면 정말 감사하겠습니다. 제가 만든 식 전체를 올리겠습니다.

void CbmiDlg::OnClickedButtonCal()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
double dcal = m_kg/(m_m*m_m);
UpdateData(TRUE);
m_cal.Format(_T("%.2f/(%.2f*%.2f)=%.1f"), m_kg,m_m,m_m,m_kg/(m_m*m_m));
if (dcal<18.5)
m_result = _T("18.5 미만 저체중 입니다.");
else if (18.5<dcal<23)
m_result = _T("18.5 ~ 23 정상체중 입니다.");
else if (23<dcal<25)
m_result = _T("23 ~ 25 과체중 입니다.");
else if (25<dcal<30)
m_result = _T("25 ~ 30 비만 입니다.");
else if(30<dcal)
m_result = _T("30 이상 고도비만 입니다.");
UpdateData(FALSE);
}










profile_image 익명 작성일 -

if문 내부의 비교식이 잘못되었습니다.

18.5<dcal<23
이 구문은 먼저 앞의 18.5<dcal이 먼저 계산됩니다.

dcal이 27.4이니 True가 나오겠죠?
그런데 True는 C++ 기본정의상 1입니다. false는 0이구요
그럼 1<23 는 True죠??

그래서 두번째에 멈추는겁니다.

조건을 따로 나눠주세요 18.5 < dcal && dcal < 23 으로요

그리고 또한가지 문제점이 있는데
dcal이 정확히 18.5나 23, 25 인 경우에 해당하는 조건이 없어 무조건 마지막의 고도비만으로 빠지는 문제가 있습니다.
그래서 조건을 18.5 <= dcal && dcal < 23 으로 변경해야 합니다.

Visual Studio 2008 책, 코딩 질문...

Visual Studio 2008 Professional 윈도우에서 공짜로 나누어 주는... 책은 "Visual C++ 2008 MFC 시스템 프로그래밍 MFC v9.0 System Programming" 입니다. 그리고 코딩 질문은요 이게 함수로...

visual studio 2019 코딩 관련 질문

visual studio를 이용하여 계산기를 만들려 하는데 결과가 출력되지 않는 오류가 생깁니다. 어떤 부분에서 오류가 생긴건지 봐주시면...

visual studio 코딩 질문이요(내공100)

... 할려면 코딩을 어떻게 해야하나요 비주얼 스튜디오로 C, C++, visual basic 등 다양한 언어 사용이돼요 다짜고짜 비주얼스튜디오로 이런결과라하시면 답변을 못드려요...