9.3> LoopAdder 클래스를 상속받아 다음 main() 함수와 실행 결과처럼 되도록 ForLoopAdder 클래스를 작성하라. ForLoopAdder 클래스의 calculate() 함수는 for 문을 이용하여 합을 구한다.
<코드>
#include<iostream> #include<string>
using namespace std;
class LoopAdder{ //추상 클래스 string name; //루프의 이름 int x, y, sum; //x에서 y까지의 합은 sum void read(); //x, y 값을 읽어 들이는 함수 void write(); //sum을 출력하는 함수 protected: LoopAdder(string name = ""){ this->name = name; } //루프의 이름을 받는다. 초깃값은 "" int getX(){ return x; } int getY(){ return y; } virtual int calculate() = 0; //순수 가상 함수. 루프를 돌며 합을 구하는 함수 public: void run(); //연산을 진행하는 함수 };
void LoopAdder::read(){ //x, y 입력 cout << name << ":" << endl; cout << "처음 수에서 두번째 수까지 더합니다. 두 수를 입력하세요 >>"; cin >> x >> y; }
void LoopAdder::write(){//결과 sum 출력 cout << x << "에서 " << y << "까지의 합 = " << sum << " 입니다" << endl; }
void LoopAdder::run(){ read(); //x, y를 읽는다. sum = calculate(); //루프를 돌면서 계산한다. write(); //결과 sum을 출력한다. }
class ForLoopAdder : public LoopAdder{ public: ForLoopAdder(string name); protected: virtual int calculate(); }; ForLoopAdder::ForLoopAdder(string name=""):LoopAdder(name){} //생성자 int ForLoopAdder::calculate(){ int from=getX(); int to=getY(); int sum=0; for(int i=from;i<to+1;i++){sum+=i;} return sum; //from에서 to까지 순차적으로 더한 값 리턴 } int main(void){ ForLoopAdder forLoop("For Loop: "); forLoop.run(); return 0; }
|
<결과창>
|
'컴퓨터 & 프로그래밍 & 전자공학 > C++' 카테고리의 다른 글
논리 게이트 (0) | 2017.12.31 |
---|---|
while, do while loop class (0) | 2017.12.31 |
KmToMile class (0) | 2017.12.31 |
WonToDollar Class (0) | 2017.12.31 |
Printer Class (0) | 2017.12.31 |