MFC 계산기
본 자료는 1페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
해당 자료는 1페이지 까지만 미리보기를 제공합니다.
1페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

MFC 계산기에 대한 보고서 자료입니다.

목차

[Debug]
[res]
Calc_V1.aps
Calc_V1.clw
Calc_V1.cpp
Calc_V1.doc
Calc_V1.dsp
Calc_V1.dsw
Calc_V1.h
Calc_V1.ncb
Calc_V1.opt
Calc_V1.plg
Calc_V1.rc
Calc_V1Dlg.cpp
Calc_V1Dlg.h
ReadMe.txt
resource.h
StdAfx.cpp
StdAfx.h



파일 30,
폴더 2

7.69MB

본문내용

void CCalc_V1Dlg::OnButtonEqual()
{
// TODO: Add your control notification handler code here
try { // 나눗셈 error 발생 시, 처리 위해서, error message를 throw한다
double denominator=1;
if (m_eDigitOrOper == digit) { //방금 눌려진 버튼이 숫자인 경우
//연산자가 이중으로 눌려진 경우 skip 하기 위해서이다
switch (m_eOperator)
{
case plus: // plus 연산
m_Result += atof(m_Edit);
break;
case minus: // minus 연산
m_Result -= atof(m_Edit);
break;
case multiply: // multiply연산
m_Result *= atof(m_Edit);
break;
case divide: // divide연산
denominator=atof(m_Edit);
if ( fabs(denominator) m_Result /= denominator;
break;
default:
m_Result = atof(m_Edit);
}
}
m_Edit.Format("%g",m_Result); // 결과 출력, %g는 소수 뒷자리 알아서 처리 해 준다
UpdateData(FALSE); // 화면에 출력
m_eOperator=none; // 연산자 초기화
m_eDigitOrOper=oper; //방금 눌린것은 숫자가 아님
}
catch (char* str) // Error message 처리
{
m_Edit=str; // throw 된 message 받는다
UpdateData(FALSE); // 화면에 출력한다
}


}

void CCalc_V1Dlg::OnButtonDot() // 소수점 처리
{
if(m_Edit.Find(".")==-1) m_Edit += '.'; //소수점이 없을 경우만 추가
m_eDigitOrOper=digit; //숫자로 처리됨
UpdateData(FALSE); // 화면에 출력
}

void CCalc_V1Dlg::OnPlus()
{
GetOperators(plus); //연산자 버튼 눌렀을 경우 GetOperator 함수에서 처리
}

void CCalc_V1Dlg::OnMinus()
{
GetOperators(minus); //연산자 버튼 눌렀을 경우 GetOperator 함수에서 처리
}

void CCalc_V1Dlg::OnMultiply()
{
GetOperators(multiply); //연산자 버튼 눌렀을 경우 GetOperator 함수에서 처리
}

void CCalc_V1Dlg::OnDivide()
{
GetOperators(divide); //연산자 버튼 눌렀을 경우 GetOperator 함수에서 처리
}

void CCalc_V1Dlg::OnClear() // Clear 버튼 눌렀을 경우 처리
{
m_Edit = "0"; //CString 변수 초기화
m_eOperator = none; //연산자 종류 초기화
m_Result = 0.0; //기존 기억값 초기화
UpdateData(FALSE); //m_Edit값 화면에 출력

}

void CCalc_V1Dlg::OnBackspace() // backspace 버튼
{
int n = m_Edit.GetLength(); // 현재 숫자의 길이를 파악해서
if (n>1) m_Edit=m_Edit.Left(n-1); //1만큼 줄인다
if (n==1) m_Edit="0"; //한자리수라면 0으로 바꾼다
m_eDigitOrOper=digit; //지금 수행한 작업은 숫자임을 나타낸다
UpdateData(FALSE); // 화면에 갱신
}

void CCalc_V1Dlg::OnPlusMinus() // 부호변경버튼
{
double reverse = 0;
reverse = -1 * atof(m_Edit);
m_Edit.Format("%g",reverse);
m_eDigitOrOper=digit;
UpdateData(FALSE);
}

void CCalc_V1Dlg::OnInverse() //역수버튼
{
// TODO: Add your control notification handler code here
double val = atof(m_Edit);
if (fabs(val) < m_Tol)
{
m_Edit = "Error: too small number to be inversed.";
UpdateData(FALSE);
return;
}
val = 1./atof(m_Edit);
m_Edit.Format("%g",val);
m_eDigitOrOper=digit;
UpdateData(FALSE);
}

void CCalc_V1Dlg::GetNumbers(char a) // 숫자 입력 시
{
if (m_Edit=="0") m_Edit=""; //초기 상태에서는 0값을 지우고 시작
if (m_eDigitOrOper == oper) m_Edit=""; //+-*/=을 눌렀을 경우 지우고 시작
m_Edit += a; // 숫자값을 붙여쓴다
m_eDigitOrOper = digit; //지금의 버튼은 숫자임을 나타낸다 (= 처리버튼에서 활용)
UpdateData(FALSE); //화면에 갱신
}

void CCalc_V1Dlg::GetOperators(OperType e) //+-*/눌렀을 경우
{
OnButtonEqual(); //기존에 연산자가 눌렸을 경우 대비 먼저 연산 수행
m_eOperator = e; //인자로 들어온 m_eOperator 값 (plus, minus, multiply, divide 중 하나) 이 기록됨
m_eDigitOrOper = oper; //지금 눌려진 버튼은 operator임 (= 처리 버튼에서 활용)
}

키워드

mfc,   계산기,   c++,   visual,   microsoft,   소스,   프로그램
  • 가격4,900
  • 페이지수5페이지
  • 등록일2011.01.04
  • 저작시기2011.1
  • 파일형식기타(rar)
  • 자료번호#647283
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니