2008. 8. 19. 15:12

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;
}