编写一个程序,定义一个point类,由它派生出5个派生类:circle(圆形)、square(正方形)、rectangle(矩形)、trapezoid(梯形)、triangle(三角形),分别计算几种
时间: 2023-05-31 08:20:16 浏览: 135
### 回答1:
可以编写一个程序,定义一个point类,由它派生出5个派生类:circle(圆形)、square(正方形)、rectangle(矩形)、trapezoid(梯形)和triangle(三角形),分别计算几种图形的面积。
### 回答2:
编写一个程序,定义一个point类,由它派生出5个派生类:circle、square、rectangle、trapezoid、triangle。这些类都继承了point类的属性和方法,并在此基础上添加了各自的特别属性和方法。
首先,定义一个point类,这个类主要包括x和y坐标属性和方法。我们可以定义一个构造函数来初始化这些属性,同时定义一个display函数来显示这个点的坐标。代码如下:
```
class point{
protected:
int x, y;
public:
point(int a, int b): x(a), y(b){}
void display(){
cout << "(" << x << "," << y << ")" << endl;
}
};
```
然后,我们分别定义5个派生类circle、square、rectangle、trapezoid、triangle,来计算他们各自的面积和周长。
1. circle类:圆形
circle类继承了point类,并在此基础上加上了一个半径r属性。我们可以定义一个函数来计算它的周长和面积。代码如下:
```
class circle : public point{
private:
double r;//半径
public:
circle(int a, int b, double c): point(a,b), r(c){}
double get_circumference(){
return 2 * 3.14 * r;
}
double get_area(){
return 3.14 * pow(r, 2);
}
};
```
2. square类:正方形
square类同样继承了point类,并在此基础上加上了一个边长l属性。我们可以定义一个函数来计算它的周长和面积。代码如下:
```
class square : public point{
private:
double l;//边长
public:
square(int a, int b, double c): point(a,b), l(c){}
double get_circumference(){
return 4 * l;
}
double get_area(){
return pow(l, 2);
}
};
```
3. rectangle类:矩形
rectangle类同样继承了point类,并在此基础上加上了两个边长l, w属性。我们可以定义一个函数来计算它的周长和面积。代码如下:
```
class rectangle : public point{
private:
double l, w;//边长
public:
rectangle(int a, int b, double c, double d): point(a,b), l(c), w(d){}
double get_circumference(){
return 2 * (l + w);
}
double get_area(){
return l * w;
}
};
```
4. trapezoid类:梯形
trapezoid类同样继承了point类,并在此基础上加上了上底a, 下底b, 高h属性。我们可以定义一个函数来计算它的周长和面积。代码如下:
```
class trapezoid : public point{
private:
double a, b, h;//上底,下底,高
public:
trapezoid(int x, int y, double c, double d, double e): point(x,y), a(c), b(d), h(e){}
double get_circumference(){
return a + b + 2 * sqrt(pow(b-a,2) + pow(h,2));
}
double get_area(){
return (a + b) * h / 2;
}
};
```
5. triangle类:三角形
triangle类同样继承了point类,并在此基础上加上了三个边长a, b, c属性。我们可以定义一个函数来计算它的周长和面积。代码如下:
```
class triangle : public point{
private:
double a, b, c;//边长
public:
triangle(int x, int y, double m, double n, double p): point(x,y), a(m), b(n), c(p){}
double get_circumference(){
return a + b + c;
}
double get_area(){
double p = (a + b + c) / 2;
return sqrt(p * (p - a) * (p - b) * (p - c));
}
};
```
以上就是定义point类,由它派生出circle、square、rectangle、trapezoid、triangle等5个派生类的程序。这个程序在计算不同形状的面积和周长时,都继承了point类的属性和方法,并在此基础上添加了各自的特别属性和方法,使计算结果更加准确。
### 回答3:
首先,我们需要定义一个Point类,它包括两个私有数据成员x和y,以及一个公有成员函数get_x和get_y,分别用于获取其私有数据成员x和y的值。
接下来,我们需要定义派生类,包括Circle、Square、Rectangle、Trapezoid和Triangle。这些类都继承自Point类,因此它们都可以访问Point类的私有数据成员x和y。
Circle类需要定义一个私有数据成员radius,表示圆的半径。它的公有成员函数get_area用于计算圆的面积,公式为πr²。
Square类需要定义一个私有数据成员side,表示正方形的边长。它的公有成员函数get_area用于计算正方形的面积,公式为s²。
Rectangle类需要定义两个私有数据成员width和height,分别表示矩形的长和宽。它的公有成员函数get_area用于计算矩形的面积,公式为wh。
Trapezoid类需要定义两个私有数据成员top和bottom,分别表示梯形的上底和下底,还需要定义一个私有数据成员height,表示梯形的高。它的公有成员函数get_area用于计算梯形的面积,公式为(top+bottom)×height/2。
Triangle类需要定义两个私有数据成员base和height,分别表示三角形的底和高。它的公有成员函数get_area用于计算三角形的面积,公式为base×height/2。
最后,我们可以在主函数中创建这些对象,并利用它们的成员函数计算它们的面积。代码示例如下:
class Point{
private:
int x, y;
public:
int get_x(){ return x; }
int get_y(){ return y; }
};
class Circle:public Point{
private:
int radius;
public:
int get_area(){ return 3.14*radius*radius; }
};
class Square:public Point{
private:
int side;
public:
int get_area(){ return side*side; }
};
class Rectangle:public Point{
private:
int width, height;
public:
int get_area(){ return width*height; }
};
class Trapezoid:public Point{
private:
int top, bottom, height;
public:
int get_area(){ return (top+bottom)*height/2; }
};
class Triangle:public Point{
private:
int base, height;
public:
int get_area(){ return base*height/2; }
};
int main(){
Circle c;
c.radius = 3;
cout<<"Circle area: "<<c.get_area()<<endl;
Square s;
s.side = 4;
cout<<"Square area: "<<s.get_area()<<endl;
Rectangle r;
r.width = 5;
r.height = 7;
cout<<"Rectangle area: "<<r.get_area()<<endl;
Trapezoid t;
t.top = 3;
t.bottom = 6;
t.height = 4;
cout<<"Trapezoid area: "<<t.get_area()<<endl;
Triangle tri;
tri.base = 8;
tri.height = 6;
cout<<"Triangle area: "<<tri.get_area()<<endl;
return 0;
}
阅读全文