编写一个c++程序,给出下面的基类,要求: (1)建立基类Area的俩个派生类Rectangle(矩形)与Isosceles(三角形),让每一个派生类都包含一个函数getArea(),分别用来返回矩形与三角形的面积。用构造函数对height与width进行初始化。 (2)写出主程序,从键盘读入矩形的长和宽及三角形的底和高,输出矩形及三角形的面积。 class Area { double height; double width; public: Area(double h,double w) { height=h; width=w; } virtual double getArea()=0; }; 输入格式: 一共两行,第1行为矩形的长和宽,第2行位三角形的底边和高。 输出格式: 第1行为矩形的面积 第2行为三角形的面积 输入样例: 在这里给出一组输入。例如: 10 5 4.5 6.5 输出样例: 在这里给出相应的输出。例如: the Area of Rectangle is 50 the Area of Isosceles is 14.625
时间: 2024-03-23 15:42:25 浏览: 60
以下是程序代码:
```c++
#include <iostream>
using namespace std;
class Area {
protected:
double height;
double width;
public:
Area(double h, double w) {
height = h;
width = w;
}
virtual double getArea() = 0;
};
class Rectangle : public Area {
public:
Rectangle(double h, double w) : Area(h, w) {}
double getArea() {
return height * width;
}
};
class Isosceles : public Area {
public:
Isosceles(double h, double w) : Area(h, w) {}
double getArea() {
return height * width / 2;
}
};
int main() {
double h, w, b, a;
cin >> h >> w >> b >> a;
Rectangle r(h, w);
Isosceles i(b, a);
cout << "the Area of Rectangle is " << r.getArea() << endl;
cout << "the Area of Isosceles is " << i.getArea() << endl;
return 0;
}
```
解释一下代码:
与上一个问题类似,这里也是定义了一个基类 Area 和两个派生类 Rectangle 和 Isosceles。不同的是,这里的 height 和 width 是 double 类型的。在主函数中,从键盘读入了矩形的长和宽以及三角形的底和高,然后创建了一个 Rectangle 对象和一个 Isosceles 对象,并分别调用它们的 getArea() 函数输出面积。注意,这里的输出格式需要与样例一致。
阅读全文