c++/filedivision
/*
아래와 같은 main함수가 수행될 수 있는 Calculator클래스를 디자인해보자.
1. Calculator클래스 디자인
▶ 멤버 변수
덧셈연산횟수, 뺄셈연산횟수, 곱셈연산횟수, 나눗셈 연산횟수
▶ 멤버 함수
Init - 멤버변수 초기화
Sum, Sub, Mul, Div - 각각 덧셈, 뺄셈, 곱셈, 나눗셈 연산
CountResult - 연산 횟수 출력
2. 클래스 멤버함수는 외부정의한다.
*/
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
class Calculator
{
public:
//멤버 변수, 멤버 변수 선언시 초기화 안된다.(java, c#은됨)
int sumc, subc, mulc, divc;
//초기화 함수
//멤버 함수
void Init();
void CountResult();
double Sum(double _a, double _b);
double Sub(double _a, double _b );
double Mul(double _a, double _b);
double Div(double _a , double _b);
};
void Calculator::Init()
{
sumc=subc=mulc=divc=0;
}
void Calculator::CountResult()
{
cout<<"\t\t** [연산횟수] **\n"<<endl;
cout<<"\t\t덧셈 횟수 : "<<sumc<<endl;
cout<<"\t\t뺄셈 횟수 : "<<subc<<endl;
cout<<"\t\t곱셈 횟수 : "<<mulc<<endl;
cout<<"\t\t나눗셈횟수 : "<<divc<<endl;
}
double Calculator::Sum(double _a, double _b)
{
double sum;
sum = _a + _b;
//sumc++;
++sumc;//성능상 가장 좋다.
return sum;
}
double Calculator::Sub(double _a, double _b )
{
double sub;
sub = _a - _b;
subc++;
return sub;
}
double Calculator::Mul(double _a, double _b)
{
double mul;
mul = _a * _b;
mulc++;
return mul;
}
double Calculator::Div(double _a , double _b)
{
double div;
div = _a / _b;
divc++;
return div;
}
int main()
{
double d1, d2;
cout << "\n\n*** 사칙 연산 프로그램 ***\n";
cout << "\n\n두 수 입력 : ";
cin >> d1 >> d2;
Calculator ca; //클래스 변수 선언
ca.Init(); //멤버변수 초기화
cout << endl << endl;
cout << d1 << " + " << d2 << " = " << ca.Sum(d1, d2) << endl;
cout << d1 << " - " << d2 << " = " << ca.Sub(d1, d2) << endl;
cout << d1 << " * " << d2 << " = " << ca.Mul(d1, d2) << endl;
cout << d1 << " + " << d2 << " = " << ca.Sum(d1, d2) << endl;
cout << d1 << " * " << d2 << " = " << ca.Mul(d1, d2) << endl;
ca.CountResult(); //연산 횟수 출력
return 0;
}