设计一个求各类图形面积的C++程序

设计一个求各类图形面积的C++程序
要求:
父类:
主要成员函数:定义图形的轮廓:计算面积等
子类:
各种图形(例如圆、矩形、三角形等)子类,要求继承父类。

如果是下面这个程序就不要了
#include <stdio.h>
#include <math.h>

class Shape
{
public:
virtual double GetArea() const = 0;
};

//三角形
class Triangle : public Shape
{
public:
Triangle(double a, double b, double c)
: m_a(a), m_b(b), m_c(c) {}

double GetArea() const
{
//海伦公式求面积
const double p = (m_a + m_b + m_c) / 2;
return sqrt(p * (p - m_a) * (p - m_b) * (p - m_c));
}

private:
double m_a, m_b, m_c;
};

//圆形
class Circle : public Shape
{
public:
Circle(double r) : m_r(r) {}

double GetArea() const
{
return PI * m_r * m_r;
}

private:
static const double PI;
double m_r;
};

const double Circle::PI = 3.1415926;

//矩形
class Rectangle : public Shape
{
public:
Rectangle(double a, double b) : m_a(a), m_b(b) {}

double GetArea() const
{
return m_a * m_b;
}

private:
double m_a, m_b;
};

int main()
{
Shape* pTriangle = new Triangle(3, 4, 5);
printf("The area of Triangle is %lf\n", pTriangle->GetArea());

Shape* pCircle = new Circle(2);
printf("The area of Circle is %lf\n", pCircle->GetArea());

Shape* pRectangle = new Rectangle(3, 4);
printf("The area of Rectangle is %lf\n", pRectangle->GetArea());

delete pTriangle;
delete pCircle;
delete pRectangle;

return 0;
}
我需要有一个基本的功能菜单
举个例子:
例:请选择你要计算面积的图形
1.三角形
2.圆形
3.矩形
选择后(假如选择的是1)
“请输入三角形的三边长度a=? b=? c=?"
最后填写完a,b,c长度后显示计算出来的面积
“三角形的面积:XXX”
然后再设计一个按键能返回第一个菜单,继续进行其他图形的面积计算

因为本人是初学者,请尽量使用常见的函数和语句,复杂点不要紧
其实我是想不用上面那个程序里的const和指针,然后再增加菜单功能,不知道怎么改,总是改了就传不了值,希望大家帮忙写出修改后的程序,谢谢

你的问题只要求计算图形的面积,而每个图形除了边数外(当然圆等图形是曲线),就没有其他的可以抽象的东西了,所以这就决定了父类会很简单,除了计算面积没其他的操作了。在父类中重载了计算面积的方法,这个方法只有两个功能,识别不同的图形,这是由边数决定的,还有就是计算面积。而关于派生,不同的图形具有不同的边,这就可以调用不同的父类方法。我在子类中声明了公有的成员变量,一般情况下这在程序中是应该坚决杜绝的,此处仅作为演示。如果不定义公有,可以在子类中写个函数返回它们的值。如果还想添加其他的图形的面积计算方法,是类似的。代码如下:
#include <iostream>
#include <math.h>

#define PI 3.14

using namespace std;

class Shape //Shape这个类里面重载了计算面积的函数
{
public:
float Shape::GetArea(float radious)//计算圆的面积
{
return float (PI*radious*radious);
}

float Shape::GetArea(float side1, float side2, float side3)//计算三角形面积
{
float average=(side1+side2+side3)/2;
return float (sqrt(average * (average-side1) * (average-side2) * (average-side3)));
}

float Shape::GetArea(float side1, float side2)//计算长方形面积
{
return float (side1 * side2);
}
};

class Triangle : public Shape
{
public:float side1, side2 ,side3;
public:
Triangle()
{
cout<<"输入三角形三边长度:"<<endl;
cin>>side1>>side2>>side3;
}
};

class Circle : public Shape
{
public:float radious;
public:
Circle()
{
cout<< "输入圆的半径:"<<endl;
cin>>radious;
}
};

class Rectangle : public Shape
{
public:float side1, side2;
public:
Rectangle()
{
cout<<"输入长方形的长和宽:"<<endl;
cin>>side1>>side2;
}
};

int main()
{
int num;
cout<<"请选择你要计算面积的图形:"<<endl<<"1.三角形 2.圆形 3.矩形"<<endl;
do{
cin>>num;
switch(num){
case 1:{
Triangle* T = new Triangle;
cout<<"三角形的面积为:"<<T->GetArea(T->side1, T->side2, T->side3)<<endl;
delete T;
break;
}
case 2:{
Circle* C = new Circle;
cout<<"圆的面积为:"<<C->GetArea(C->radious)<<endl;
delete C;
break;
}
case 3:{
Rectangle* R = new Rectangle;
cout<<"长方形的面积为:"<<R->GetArea(R->side1, R->side2)<<endl;
delete R;
break;
}
default:cout<<"请在1-3之间选择:";
}
}while (num != 1|| num != 2|| num != 3);

return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-01-09
你试试用Swich case 来考虑一下吧.这个功能其实实现起来是比较容易的`多想想吧.

如何用c++编写计算面积的程序
一、首先弄清公式:S(面积)=a(长)×b(宽);这应该是最简单的公式了。二、明确输入,既然是求面积,必须知道长和宽,把它们作为输入项。三、模块划分:计算过程封装到函数int RecArea(int rec_length, int rec_width);四、实现如下:include <stdlib.h> include <stdio.h> \/\/ 计算矩形面积 in...

用C++编程计算圆形、长方形和正方形的面积。
cout<<"长方形的面积是:\\n"<<_s<<endl;} int main(){ S c;cout<<"请输入图形类型:\\n(1:圆;2:正方形;3:长方形)"<<endl;int x;cin>>x;switch(x){ case(1):c.yuan(R);break;case(2):c.zheng(L);break;case(3):c.chang(A,B);} return 0;} ...

如何用C++语言编译计算面积程序
void main(){int n,x,y,r;cout<<"输入图形类型,圆请输入1,长方形或正方形输入2";cin>>n;if(n==2) {cout<<"请输入长,宽:";cin>>x;cin>>y;cout<<"面积:"<<x*y<<endl;} if(n==1){cout<<"请输入半径:";cin>>r;cout<<"面积:"<<2*r*r<<endl;} } ...

C++编程,求正方形,长方形,三角形,梯形的周长和面积的程序怎么编写。
circle *ptr;cout << "Enter a shape (1 = circle, 2 = cylinder, 3 = sphere): "<< endl;cin >> shape;if(shape > '0' &&shape < '4'){ cout << "Enter radius" << endl;cin >> radius;if(shape == '1' ){ ptr = new circle(radius);} else if(shape == '2'){...

C++编一个程序,要求输入程序参数,直接计算并显示正方形或圆的面积
也就是说,你的程序运行的时候,要在dos窗口下完成,输入格式是:程序名 + 参数 回车

C++编程,求正方形,长方形,三角形,梯形的周长和面积
cout << "三角形的周长为:\\t" << sqrt((a*a) + (b*b) - 2 * a*b*cos(c)) + a + b << "\\t三角形的面积为:" << 2 * a *b * sin(c) << endl;\/*梯形种类太多,这里只计算直角梯形的*\/ cout << "请输入梯形的上底长:";cin >> a;cout << "请输入梯形的下底...

...编写一个程序计算三角形正方形圆形三种图形的面积,要求 1.三种图形...
virtual void calSquare() { square = bottom * height \/ 2; cout << "三角形面积是 " << square << endl; }};class Circle: public Base{private: float radius;public: Circle(float r): radius(r) {} virtual void calSquare() { square = radius * radius * 3.1415926;...

用C++编程求解圆,长方形,正方形等面积
cout<<"请选择你要计算的图形:"<<endl;cout<<"A.圆形B.正方形C.矩形"<<endl;char s;cin>>s;double a,b;switch(s){ case 'a':cout<<"请输入半径:"<<endl;cin>>a;cout<<"园的面积为:"<<3.14*a*a<<endl;break;case 'b':cout<<"请输入正方形边长:"<<endl;cin>>a;cout...

求编写一个C++程序,求直角三角形的面积和周长
include <iostream.h> include <math.h>void main(void){ double S=0,a=0,b=0,C=0;cout<<"请输入两直角边的值:"<<endl;cin>>a>>b;S = (a*b)\/2;C = a+b+sqrt(a*a+b*b);cout<<"直角三角形的面积为:"<<S<<endl;cout<<"直角三角形的周长为:"<<C<<endl;} ...

如何用C++编写一个简单的程序求面积。
1、首先打开DEV C++软件,在编辑页面输入以下代码,如下图所示。2、题目要求我们在定义变量时,基本类型要全部为float浮点型,所以在编辑源代码时,我们在编写输入代码时,一定要注意给定的类型是什么,根据类型来编写。3、在输入代码中,即“scanf”输入函数内,一定要在我们的变量前加一个地址符,否则...

相似回答