请C++师傅帮忙看下(!!!)

chaoji2759 2009-06-20 09:22:06
问题:
计算圆柱体体积与表面积(类实现)
设计一个类Column,求给定半径与高的圆柱体的体积和表面积,输出相应值。要求包含radius、height数据成员,并包含类的对象进行赋值、计算体积、计算表面积及输出结果的相关成员函数。比较本例的类实现与上例的结构实现的差异,对结构化的程序设计和面向对象程序设计作比较。



下面的代码是在网上找的,请帮我改改,符合上面的问的答案~谢谢
#include<iostream.h>
#include<math.h>
const double PI=3.1415926;
class Circle { //圆类
protected:
double r; //半径
public:
Circle(double radius=0): r(radius) {}
double Area() { //计算圆的面积
return PI*r*r;
}
double Volume() { //计算圆的体积
return 0;
}
};

class Sphere: public Circle { //球体类
public:
Sphere(double radius=0): Circle(radius) {}
double Area() { //计算球的表面积
return 4*PI*r*r;
//返回表达式可以用4*Circle::Area()来代替
}
double Volume() { //计算球的体积
return 4*PI*pow(r,3)/3;
//pow(r,3)求出r的立方值,此函数原型在math.h头文件中
}
};

class Cylinder: public Circle { //圆柱体类
double h; //高度
public:
Cylinder(double radius=0, double height=0): Circle(radius) {
h=height;
}
double Area() { //计算圆柱体的表面积
return 2*PI*r*(r+h);
}
double Volume() { //计算圆柱体的体积
return PI*r*r*h;
//返回表达式可以用Circle::Area()*h来代替
}
};

class Cone: public Circle { //圆锥体类
double h; //高度
public:
Cone(double radius=0, double height=0): Circle(radius) {
h=height;
}
double Area() { //计算圆锥体的表面积
double l=sqrt(h*h+r*r); //sqrt函数求出参数值的平方根,
return PI*r*(r+l);
}
double Volume() { //计算圆锥体的体积
return PI*r*r*h/3;
}
};

void main()
{
Circle r1(2);
Sphere r2(2);
Cylinder r3(2,3);
Cone r4(2,3);
cout<<"Circle: "<<r1.Area()<<' '<<r1.Volume()<<endl;
cout<<"Sphere: "<<r2.Area()<<' '<<r2.Volume()<<endl;
cout<<"Cylinder: "<<r3.Area()<<' '<<r3.Volume()<<endl;
cout<<"Cone: "<<r4.Area()<<' '<<r4.Volume()<<endl;
}
此程序运行结果如下:
Circle: 12.5664 0
Sphere: 50.2655 33.5103
Cylinder: 62.8319 37.6991
Cone: 35.2207 12.5664
...全文
99 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jlg1140410822 2011-03-22
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
class Circle
{
public:
Circle(double r=0.0):radius(r){}
double Area()
{
return PI*radius*radius;
}
static double PI;
virtual ~Circle(){}
private:
double radius;
};
double Circle::PI=3.1415;
class Colum:public Circle
{
public:
Colum(double r=0.0,double h=0.0):Circle(r),hight(h){}
double Volume() //计算圆的体积
{
return Area()*hight;
}
private:
double radius;
double hight;
};

int main()
{
Colum c(3.0,4.0);
cout<<c.Area()<<endl;
cout<<c.Volume()<<endl;
return 0;
}
chaoji2759 2009-06-20
  • 打赏
  • 举报
回复
谢谢关注。。
findcsdn 2009-06-20
  • 打赏
  • 举报
回复

对象加一个成员函数


int init()
{
cout << "please input radius:";
cin >> radius;
if(radius > 0.000001)
{
cout << "please input height:";
cin >> height;
return 1;
}
else
return 0;
}


把 main 改一下


void main()
{
Column a(0, 0);
while(a.init())
{
a.outinf();
}
}

你自己多练习吧,但愿你能明白面向对像的精髓。



chaoji2759 2009-06-20
  • 打赏
  • 举报
回复
谢谢你的答案,请问您的代码可以改成,运行后输入半径和高
然后输出圆柱体的体积和表面积么?麻烦了
chaoji2759 2009-06-20
  • 打赏
  • 举报
回复
谢谢你的答案,请问您的代码可以改成,运行后输入半径和高
然后输出圆柱体的体积和表面积么?麻烦了
findcsdn 2009-06-20
  • 打赏
  • 举报
回复

#include <iostream.h>


const double PI=3.1415926;

class Column
{
double radius;
double height;
private:
double CircleArea()
{
return PI * radius * radius;
}

double CircleLen()
{

return PI * radius * 2;
}

public:
Column(double r, double h)
{
radius = r;
height = h;
}

double Area()
{
double t = CircleLen() * height;
return (CircleArea() * 2) + t;
}

double Volume()
{
return CircleArea() * height;

}
void outinf()
{
cout << "Radius: " << radius << endl;
cout << "Height: " << height << endl;
cout << "Area: " << Area() << endl;
cout << "Vlume: " << Volume() << endl;
}
};



void main()
{
Column a(2, 3);
a.outinf();
}



我也练习了一个。

yangkunhenry 2009-06-20
  • 打赏
  • 举报
回复

//只写了圆柱体
#include <iostream>
using namespace std;
class Circle
{
public:
Circle(double r=0.0):radius(r){}
double Area()
{
return PI*radius*radius;
}
static double PI;
virtual ~Circle(){}
private:
double radius;
};
double Circle::PI=3.1415;
class Colum:public Circle
{
public:
Colum(double r=0.0,double h=0.0):Circle(r),hight(h){}
double Volume() //计算圆的体积
{
return Area()*hight;
}
private:
double radius;
double hight;
};

int main()
{
Colum c(3.0,4.0);
cout<<c.Area()<<endl;
cout<<c.Volume()<<endl;
return 0;
}

lz应该自己先写写才能达到锻炼的目的
woods2001 2009-06-20
  • 打赏
  • 举报
回复
关注~

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧