새로새록
[c++]8. 상속받는 삼각형, 사각형, 원 본문
아래의 코드를 기반으로 Polygon class을 상속받는 Rectangle class를 선언하고 둘레와 넓이를 구하는 프로그램을 작성하라. 단, 정사각형이라 가정한다.
int main()
{
Polygon pol;
Rectangle rec(4, 10);
cout << "--- Polygon class ---" << endl;
pol.calcGirth();
pol.calcArea();
cout << "--- Rectangle class ---" << endl;
rec.calcGirth();
rec.calcArea();
return 0;
}
[참조 1]
class Polygon {
public:
Polygon();
Polygon(int point, float length);
~Polygon();
virtual void calcGirth();
virtual void calcArea();
protected:
int mPoint; // 꼭지점 갯수
double mLength; // 한 변의 길이
};
[참조 2]
class Rectangle : public Polygon
{
public:
Rectangle() {};
Rectangle(int point, float length) : Polygon(point, length);
~Rectangle() {};
void calcGirth() override;
void calcArea() override;
};
#include <iostream>
#include <string>
using namespace std;
class Polygon {
public:
Polygon(): mPoint(0), mLength(0){}
Polygon(int point, float length):
mPoint(point), mLength(length){}
~Polygon() {};
virtual void calcGirth() {
cout << "Girth : empty" << endl;
}
virtual void calcArea() {
cout << "Area : empty" << endl;
}
protected:
int mPoint;
double mLength;
};
class Rectangle : public Polygon {
public:
Rectangle(): Polygon(){}
Rectangle(int point, float length) :
Polygon(point, length){}
~Rectangle() {};
void calcGirth() override {
cout << "Girth : " << mPoint * mLength << endl;
}
void calcArea() {
cout << "Area : " << mLength * mLength << endl;
}
};
int main() {
Polygon pol;
Rectangle rec(4, 10);
cout << "--- Polygon class ---" << endl;
pol.calcGirth();
pol.calcArea();
cout << "--- Rectangle class ---" << endl;
rec.calcGirth();
rec.calcArea();
return 0;
}
위 문제에서 작성한 프로그램을 기반으로 Polygon class를 상속하는 Triangle, Rectangle, Circle class를 선언하고 둘레와 넓이를 구하는 프로그램을 작성하라. 단, 모든 도형은 정다각형이라 가정한다.
int main()
{
Triangle tri(3, 10);
Rectangle rec(4, 10);
Circle cir(0, 5);
cout << "--- Triangle class ---" << endl;
tri.calcGirth();
tri.calcArea();
cout << "--- Rectangle class ---" << endl;
rec.calcGirth();
rec.calcArea();
cout << "--- Circle class ---" << endl;
cir.calcGirth();
cir.calcArea();
return 0;
}
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
class Polygon {
public:
Polygon(): mPoint(0), mLength(0){}
Polygon(int point, float length):
mPoint(point), mLength(length){}
~Polygon() {};
virtual void calcGirth() {
cout << "Girth : empty" << endl;
}
virtual void calcArea() {
cout << "Area : empty" << endl;
}
protected:
int mPoint;
double mLength;
};
class Triangle : public Polygon {
public:
Triangle() : Polygon() {}
Triangle(int point, float length) :
Polygon(point, length) {}
~Triangle() {};
void calcGirth() override {
cout << "Girth : " << mPoint * mLength << endl;
}
void calcArea() {
cout << "Area : " << sqrt(3) /4 * mLength * mLength << endl;
}
};
class Circle : public Polygon {
public:
Circle() : Polygon() {}
Circle(int point, float length) :
Polygon(point, length) {}
~Circle() {};
void calcGirth() override {
cout << "Girth : " << 2 * 3.14 * mLength << endl;
}
void calcArea() {
cout << "Area : " << (3.14)*mLength * mLength << endl;
}
};
class Rectangle : public Polygon {
public:
Rectangle(): Polygon(){}
Rectangle(int point, float length) :
Polygon(point, length){}
~Rectangle() {};
void calcGirth() override {
cout << "Girth : " << mPoint * mLength << endl;
}
void calcArea() {
cout << "Area : " << mLength * mLength << endl;
}
};
int main() {
Triangle tri(3, 10);
Rectangle rec(4, 10);
Circle cir(0, 5);
cout << "--- Triangle class ---" << endl;
tri.calcGirth();
tri.calcArea();
cout << "--- Rectangle class ---" << endl;
rec.calcGirth();
rec.calcArea();
cout << "--- Circle class ---" << endl;
cir.calcGirth();
cir.calcArea();
return 0;
}
'소프트웨어융합 > 경희대 c++ 과제' 카테고리의 다른 글
[c++]8. 어벤져스 캐릭터 배틀 (0) | 2020.07.16 |
---|---|
[c++]8. 기차의 사람 수 계산 (0) | 2020.07.16 |
[c++]7. 로그인 정보 연속 받기 (0) | 2020.07.16 |
[c++]7. 계좌 정리 (0) | 2020.07.16 |
[c++]7. 전 재산 계좌 송금 (0) | 2020.07.16 |