作业帮 > 数学 > 作业

C++的问题,还请用比较简单的,能不构造就不构造,好的话可以追加分.

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/12 01:35:48
C++的问题,还请用比较简单的,能不构造就不构造,好的话可以追加分.
l 输入圆的半径,计算并输出圆的周长和面积;
l 输入圆柱的半径和高,计算并输出圆柱的表面积和体积;
l 输入圆锥的半径和高,计算并输出圆锥的表面积和体积;
l 输入圆球的半径,计算并输出圆球的表面积和体积;
l 输入长方形的长和宽,计算并输出长方形的周长和面积;
l 输入长方体的长、宽和高,计算并输出长方体的表面积和体积.
要求:
① 必须设计圆、圆柱、圆锥、圆球、长方形、长方体等类;
② 必须应用类的继承和派生;
③ 必须应用虚函数;
能反复计算,除非用户选择退出
#include <iostream>
#include <cmath>
#define PAI 3.1415926 //π值
using namespace std;

//基类
class graph
{
protected:
float area;  //面积
public: 
virtual void setSize()=0;
virtual void getArea()=0;
};

//圆
class circle:public graph
{
float radius;  //半径
float perimeter;  //高
public:
void setSize()
{
cout<<"输入圆的半径:";
cin>>radius;
}

void getArea()
{
area=PAI*radius*radius;
cout<<"此矩形的面积="<<area<<endl;
}

void getPerimeter()
{
perimeter=2*PAI*radius;
cout<<"此矩形的周长="<<perimeter<<endl;
}
};

//圆柱体
class cylinder:public graph
{
private:
float radius; //半径
float height; //高
public:
void setSize()
{
cout<<"输入圆柱半径和高(以空格隔开):";
cin>>radius>>height;
}

void getArea()
{
area=(PAI*radius*radius)*2+(2*PAI*radius)*height;
cout<<"此圆柱的表面积="<<area<<endl;
}

void getVolumn()
{
area=PAI*radius*radius*height;
cout<<"此圆柱的体积="<<area<<endl;
}
};

//圆锥体
class tapered:public graph
{
private:
float radius; //半径
float height;  //高
public:
void setSize()
{
cout<<"输入圆锥半径和高(以空格隔开):";
cin>>radius>>height;
}

void getArea()
{
area=(2*PAI*radius)/2*sqrt(radius*radius+height*height);
cout<<"此圆锥的表面积="<<area<<endl;
}

void getVolumn()
{
area=PAI*radius*radius*height/3;
cout<<"此圆锥的体积="<<area<<endl;
}
};

//球体
class circleball:public graph
{
private:
float radius;  //半径
public:
void setSize()
{
cout<<"输入球的半径:";
cin>>radius;
}

void getArea()
{
area=4*PAI*radius*radius;
cout<<"此球体的面积="<<area<<endl;
}

void getVolumn()
{
area=3*PAI*radius*radius*radius/4;
cout<<"此球体的体积="<<area<<endl;
}
};

//长方形
class square:public graph
{
private:
float width;  //宽
float length;  //长
float perimeter;  //周长
public:
void setSize()
{
cout<<"输入矩形长和宽(以空格隔开):";
cin>>length>>width;
}

void getArea()
{
area=width*length;
cout<<"此矩形的面积="<<area<<endl;
}

void getPerimeter()
{
perimeter=width*2+length*2;
cout<<"此矩形的周长="<<perimeter<<endl;
}
};

//长方体
class cuboid:public graph
{
private:
float length;  //长
float width;  //宽
float heigth;  //高
public:
void setSize()
{
cout<<"输入长方体长、宽、高(以空格隔开):";
cin>>length>>width>>heigth;
}

void getArea()
{
area=length*width*2+length*heigth*2+width*heigth*2;
cout<<"此长方体的表面积="<<area<<endl;
}

void getVolumn()
{
area=length*width*heigth;
cout<<"此长方体的体积="<<area<<endl;
}
};

void display()
{
int choice;
cout<<"1. 输入圆的半径,计算并输出圆的周长和面积"<<endl
<<"2. 输入圆柱的半径和高,计算并输出圆柱的表面积和体积"<<endl
<<"3. 输入圆锥的半径和高,计算并输出圆锥的表面积和体积"<<endl
<<"4. 输入圆球的半径,计算并输出圆球的表面积和体积"<<endl
<<"5. 输入长方形的长和宽,计算并输出长方形的周长和面积"<<endl
<<"6. 输入长方体的长、宽和高,计算并输出长方体的表面积和体积"<<endl
<<"0. 退出"<<endl;
while(1)
{
cout<<"输入:";
cin>>choice;
switch(choice)
{
case 0:
exit(0);break;
case 1:
{
circle cir;
cir.setSize();
cir.getArea();
cir.getPerimeter();
break;
}

case 2:
{
cylinder cyli;
cyli.setSize();
cyli.getArea();
cyli.getVolumn();
break;
}
case 3:
{
tapered tape;
tape.setSize();
tape.getArea();
tape.getVolumn();
break;
}
case 4:
{
circleball cirball;
cirball.setSize();
cirball.getArea();
cirball.getVolumn();
break;
}
case 5:
{
square squr;
squr.setSize();
squr.getArea();
squr.getPerimeter();
break;
}
case 6:
{
cuboid cube;
cube.setSize();
cube.getArea();
cube.getVolumn();
break;
}
default:
cout<<"无此选项"<<endl;
}
}
}

int main()
{
display();
return 0;
}
再问: 12,13行的 virtual void setSize()=0; virtual void getArea()=0; 赋值0,是什么原理,能解释下吗?
再答: 这是纯虚函数的写法,声明不定义,在继承的时候实现。
再问: 好的,谢谢!!