中易网

用C++语言编写面向对象程序,实现柱体体积和表面积的计算的代码

答案:3  悬赏:30  
解决时间 2021-03-14 22:06
问题网址如下:
http://wenku.baidu.com/link?url=uhOTl-VbZxh5ULw0nmP1BWMM-meHJ_vICCtIJxO1sT_kESHONuFD2dVihQxfI94k-pgHE7Gw0z0OGmlfPvBSEFF4a8ubHQIyAVlEXdw5X1O
最佳答案
#include <iostream>
#include <cmath>

using namespace std;

double const PI = 3.14159265358979;

class Point {
private :
double x;
double y;
public :
Point(double nx = 0, double ny = 0) : x(nx),y(ny) {}
double Getx() const { return x; }
double Gety() const { return y; }
void Setx(double nx) { x = nx; }
void Sety(double ny) { y = ny; }
friend double Disdance(const Point &a, const Point &b) {
double mt1 = (a.x - b.x) * (a.x - b.x);
double mt2 = (a.y - b.y) * (a.y - b.y);
return sqrt(mt1 + mt2);
}
void Show() const {
cout << "(" << x << "," << y << ")";
}
};

class Orthogon {
private :
double length;  // 矩形的长度
double width;   // 矩形的宽度
public :
Orthogon(double len = 0, double w = 0) : length(len),width(w) {}
void Set(double len, double w) {length = len; width = w; }
double GetGirth() const { return 2*(length + width); }
double GetBasalArea() const { return length * width; }
void Show() const {
cout << "矩形底边长: " << length << endl;
cout << "矩形底边宽: " << width << endl;
cout << "矩形底面周长: " << GetGirth() << endl;
cout << "矩形底面面积: " << GetBasalArea() << endl;
}
};

class Circle {
private :
Point centre;
double radius;
public :
Circle() { centre = Point(0,0); radius = 0; }
Circle(const Point &center,double r = 0) : centre(center),radius(r) {}
void Set(const Point &pcen, double r) {centre = pcen; radius = r; }
double GetGirth() const { return 2 * PI * radius; }
double GetBasalArea() const { return PI * radius * radius; }
void Show() const {
cout << "圆心坐标: "; centre.Show();cout << endl;
cout << "半径: " << radius << endl;
cout << "矩形底面周长: " << GetGirth() << endl;
cout << "矩形底面面积: " << GetBasalArea() << endl;
}
};

class Triangle {
private :
Point A;
Point B;
Point C;
public :
Triangle() { A = 0; B = 0; C = 0; }
Triangle(const Point &pa, const Point &pb, const Point &pc) {
A = pa; B = pb; C = pc;
}
void Set(const Point &pa, const Point &pb, const Point &pc) {
A = pa; B = pb; C = pc;
}
double GetAB() const { return Disdance(A,B); }
double GetBC() const { return Disdance(B,C); }
double GetCA() const { return Disdance(C,A); }
double GetGirth() const { return GetAB() + GetBC() + GetCA(); }
double GetBasalArea() const {
double a,b,c,p;
a = GetBC(); b = GetCA(); c = GetAB();
p = (a + b + c) / 2.0;
return sqrt(p * (p - a) * (p - b) * (p - c));
}
void Show() const {
cout << "顶点A: ";A.Show();cout << ", ";
cout << "顶点B: ";B.Show();cout << ", ";
cout << "顶点C: ";C.Show();cout << endl;
cout << "边长: " << GetAB() << ", " << GetBC() << ", " << GetCA() << endl;
cout << "周长: " << GetGirth() << endl;
cout << "面积: " << GetBasalArea() << endl;
}
};

template<typename Type>
class Podetium {
private :
Type base;
double high;
public :
Podetium(const Type &bs, double h) : base(bs),high(h) {}
double GetVolume() const { return high * base.GetBasalArea(); }
double GetSurfaceArea() const {
return base.GetGirth() * high + 2 * base.GetBasalArea();
}
void Show() const {
base.Show();
cout << "柱体高: " << high << endl;
cout << "柱体表面积: " << GetSurfaceArea() << endl;
cout << "柱体体积: " << GetVolume() << endl;
}
};

int main() {
Point center(2,3); // 圆心坐标
Point po[3]; // 三角形顶点
Orthogon orth; // 声明矩形变量
Circle cle;    // 声明圆变量
Triangle trg;  // 声明三角形变量
double x,y,len,w,r,h;
cout << "圆柱的半径:"; cin >> r;
cout << "圆柱的高:"; cin >> h;
cle.Set(center,r); // 构造圆
Podetium<Circle> pdtc(cle,h); // 构造圆柱体
pdtc.Show(); // 显示圆柱信息
cout << "长方体底边长:"; cin >> len;
cout << "长方体底边宽:"; cin >> w;
cout << "长方体的高:"; cin >> h;
orth.Set(len,w);
Podetium<Orthogon> pdto(orth,h);
pdto.Show();
for(char c = 'A'; c <= 'C'; ++c) {
cout << "三棱柱 " << c << " 点坐标:";
cin >> x >> y;
po[c - 'A'].Setx(x);
po[c - 'A'].Sety(y);
}
cout << "三棱柱的高:";
cin >> h;
trg.Set(po[0],po[1],po[2]);
Podetium<Triangle> pdtt(trg,h);
pdtt.Show();
return 0;
}
全部回答
#include<stdio.h> void main() { float r,b,h; printf("输入圆柱的半径:"); scanf("%f",&r); printf("输入圆柱的高:"); scanf("%f",&h); printf("圆柱的体积为:%.2f\n",3.14*r*r*h); printf("圆柱的表面积为:%.2f\n\n",3.14*2*r*h+2*3.14*r*r); printf("输入四棱柱底面的长:"); scanf("%f",&r); printf("输入四棱柱底面的宽:"); scanf("%f",&b); printf("输入四棱柱的高:"); scanf("%f",&h); printf("四棱柱的体积为:%.2f\n",r*b*h); printf("四棱柱的表面积为:%.2f\n\n",2*(r+b)*h+2*r*b); } 三角行的公式没找到。。。
你好! #include void main() { float r,b,h; printf("输入圆柱的半径:"); scanf("%f",&r); printf("输入圆柱的高:"); scanf("%f",&h); printf("圆柱的体积为:%.2f\n",3.14*r*r*h); printf("圆柱的表面积为:%.2f\n\n",3.14*2*r*h+2*3.14*r*r); printf("输入四棱柱底面的长:"); scanf("%f",&r); printf("输入四棱柱底面的宽:"); scanf("%f",&b); printf("输入四棱柱的高:"); scanf("%f",&h); printf("四棱柱的体积为:%.2f\n",r*b*h); printf("四棱柱的表面积为:%.2f\n\n",2*(r+b)*h+2*r*b); } 三角行的公式没找到。。。 如有疑问,请追问。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
js或JQ实现类似百度首页智能提示框(这个已经
打篮球对方盖帽扑空摔伤对方要求赔偿
我的微波炉为什么总断保险丝
午餐时间1小时.算工作时间吗?
高要区莲塘镇人民调解委员会地址有知道的么?
中国联通(诸由营业厅)地址在什么地方,我要处
我9月25来的月经到1号停了,1号同房没射进去
漆黑的魅影5.0
帮我编8句比较级的英语句子
鲁大师里的磁盘检测功能有什么用
中石油加油站(严桥路站)地址在哪,我要去那里
尤萨西班牙健康干洗兴华店这个地址在什么地方
苹果笔记本外壳用的什么材料
支座两端上部的钢筋是不是都是负筋!
电业局把我家电表打开,说电表小电流时不转,怀
推荐资讯
求韩语达人翻译!
4D动感体验厅在哪里啊,我有事要去这个地方
电脑主机的耳机和麦是分开的。音响设备只有一
2吨重放30米属多大吊车
比的前项一定,比的后项和比值成什么比例? 要
cost center是什么意思
怎么学习技巧使自己电话营销的成交率提高?
黑枸杞苁蓉可以一起泡酒喝可以减肥吗
NEWS WATCH?
家中死老鼠身上的跳蚤叮咬人后是否会感染弓形
花园里有月季x棵,牡丹是月季的3倍,牡丹有__
好想好想离开这里,即使不知道去哪里。。。
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?