C++

[C++] 명품 C++ 프로그래밍 실습문제 9장 4번

Hs’s Coding vlog 2023. 1. 14. 15:30

[C++]명품 C++ 프로그래밍 실습문제 9장 4번

[C++]명품 C++ programming 실습문제 9장 4번

명품 C++ 프로그래밍실습문제/연습문제 /C++

#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>

using namespace std;
class LoopAdder { // 최상위 클래스
    

    string name;
    int x,y,sum;
    void read();
    void write();
protected:
    LoopAdder(string name= ""){this->name =name;}
    int getX(){return x;}
    int getY(){return y;}
    virtual int calculate()=0;
public:
    virtual void run();
};

void LoopAdder::read(){
    cout << name << ":" << endl;
    cout << "처음 수부터 두번째수까지 더합니다. 두수를 입력하세요>>" ;
    cin >> x >> y;
}
void LoopAdder::write(){
    cout << x << "에서 " << y << " 까지의 합 = " << sum << " 입니다" << endl;
}
void LoopAdder::run(){
    read();
    sum = calculate();
    write();
}


class WhileLoopAdder : public LoopAdder{ //make while func
  
public:
    WhileLoopAdder(string name) : LoopAdder(name) {}
    int calculate(){
        int sum=0;
        int i=0;
        int a=getX();
        int k = getY()-getX(); // 4 2 2
        while (i<=k)
        {
            sum = sum + a++;
            i++;
        }
        
        
        
        return sum;
    }
 
    
};


class DoWhileLoopAdder : public LoopAdder{ //make do while func
    
public:
    DoWhileLoopAdder(string name) : LoopAdder(name) {}
    int calculate(){
        int sum=0;
        int i=0;
        int a=getX();
        int k = getY()-getX(); // 4 2 2
        do 
        {
            sum = sum+ a++;
            i++;
        }
        while (i<k+1);
      
        
        
        
        
        return sum;
        
    }

    
};


int main(){
    
    WhileLoopAdder whileLoop("While Loop");
    DoWhileLoopAdder dowhileLoop("Do while Loop");
    
    whileLoop.run();
    dowhileLoop.run();
    return 0;
}