반응형
1~2번에 쓰이는 단위변환 추상 클래스 Converter입니다.
#include<iostream>
using namespace std;
class Converter {
protected:
double ratio;
virtual double convert(double src) = 0; //src를 다른 단위로 변환한다.
virtual string getSourceString() = 0; //src 단위 명칭
virtual string getDestString() = 0; //dest 단위 명칭
public:
Converter(double ratio) { this->ratio = ratio; }
void run() {
double src;
cout << getSourceString() << "을 " << getDestString() << "로 바꿉니다. ";
cout << getSourceString() << "을 입력하세요>> ";
cin >> src;
cout << "변환 결과 : " << convert(src) << getDestString() << endl;
}
};
문제
Converter 클래스를 상속받아 km를 mile(마일)로 변환하는 KmToMile 클래스를 작성하라. main() 함수와 실행 결과는 다음과 같다.
int main()
{
KmToMile toMile(1.609344); //1mile은 1.609344km
toMile.run();
}
결과
Km을 Mile로 바꿉니다. Km을 입력하세요>> 25
반환 결과 : 15.5343Mile
소스코드
#include<iostream>
using namespace std;
class Converter {
protected:
double ratio;
virtual double convert(double src) = 0; //src를 다른 단위로 변환한다.
virtual string getSourceString() = 0; //src 단위 명칭
virtual string getDestString() = 0; //dest 단위 명칭
public:
Converter(double ratio) { this->ratio = ratio; }
void run() {
double src;
cout << getSourceString() << "을 " << getDestString() << "로 바꿉니다. ";
cout << getSourceString() << "을 입력하세요>> ";
cin >> src;
cout << "변환 결과 : " << convert(src) << getDestString() << endl;
}
};
class KmToMile : public Converter {
double mile;
public:
KmToMile(double mile) : Converter(mile) { this->mile = mile; }
virtual double convert(double src) { return src / mile; }
virtual string getSourceString() { return "Km"; }
virtual string getDestString() { return "Mile"; }
};
int main()
{
KmToMile toMile(1.609344); //1mile은 1.609344km
toMile.run();
}
반응형
'명품C++프로그래밍' 카테고리의 다른 글
명품 C++ Programming 실습문제 9장 4번 (0) | 2021.06.01 |
---|---|
명품 C++ Programming 실습문제 9장 3번 (0) | 2021.06.01 |
명품 C++ Programming 실습문제 9장 1번 (0) | 2021.06.01 |
명품 C++ Programming 실습문제 8장 9번 (1) | 2021.05.27 |
명품 C++ Programming 실습문제 8장 8번 (1) | 2021.05.26 |