编写一个程序计算三角形、正方形和圆形三种图形的面积。

编写一个程序计算三角形、正方形和圆形三种图形的面积。依题意,可以抽象出一个基类base,在其中说明一个虚函数,用来求面积。并利用单接口、多实现版本设计各个图形面积的方法。例如,使得下面的主函数
int main() {
base *p;
triangle t(20, 20); //第一个参数为三角形底边,第二个参数为底边上的高
square s(20);
circle c(20);
p = &t;
p->disp();
p = &s;
p->disp();
p = &c;
p->disp();

return 0;
}
的运行结果为:
三角形面积:200
正方形面积:400
圆形面积:1256.6

#include<iostream>
using namespace std;

class base
{

public:

virtual void disp();
};

class triangle:public base
{

private:
double bottom;
double height;
public:
triangle(double b,double h)
{

bottom = b;
height = h;
}

void disp()
{

cout<<"三角形面积:"<<bottom * height / 2<<endl;
}
};

class square:public base
{

private :
double a;
public:
square(double a1)
{

a = a1;
}

void disp()
{

cout<<"正方形面积:"<<a * a<<endl;
}
};

#define  pi 3.1415

class circle:public base
{

private:
double r;
public:
circle(double r1)
{

r = r1;
}

void disp()
{

cout<<"圆形面积:"<<pi * r  * r<<endl;
}
};

int main() {

base *p;

triangle t(20, 20); //第一个参数为三角形底边,第二个参数为底边上的高
square s(20);
circle c(20);

p = &t;
p->disp();
p = &s;
p->disp();
p = &c;
p->disp();

return 0;
}

扩展资料:

编译方式下,首先通过一个对应于所用程序设计语言的编译程序对源程序进行处理,经过对源程序的词法分析、语法分析、语意分析、代码生成和代码优化等阶段将所处理的源程序转换为用二进制代码表示的目标程序。

然后通过连接程序处理将程序中所用的函数调用、系统功能调用等嵌入到目标程序中,构成一个可以连续执行的二进制执行文件。调用这个执行文件就可以实现程序员在对应源程序文件中所指定的相应功能。

参考资料来源:百度百科-编程

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-12-01
#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

class base
{
public:
virtual void disp() = 0;
};

class triangle : public base
{
public:
triangle(int base, int height) : m_base(base), m_height(height) {}

void disp()
{
cout << "三角形面积: " << m_base* m_height / 2 << endl;
}

private:
int m_base;
int m_height;
};

class square : public base
{
public:
square(int side) : m_side(side) {}

void disp()
{
cout << "正方形面积: " << m_side* m_side << endl;
}

private:
int m_side;
};

class circle : public base
{
public:
circle(int radius) : m_radius(radius) {}

void disp()
{
cout << "圆形面积: "
<< setprecision(5) // nasty!!
<< m_radius * m_radius * M_PI << endl;
}

private:
int m_radius;
};追问

error C2065: 'setprecision' : undeclared identifier

追答

#include 应该就可以。
或者去掉那一行,只影响输出的有效位数。
gcc 4.4 编译通过。

本回答被提问者采纳
第2个回答  2012-05-28
1.首先实现基类:
class abstract base
{
virtual void disp() = 0;
};
2.依次实现三角形,正方形,圆形面积的计算:
#include<iostream>
using namespace std;
class triangle:public base
{
private:
double bottom;
double height;
triangle(double b,double h)
{
bottom = b;
height = h;
}
void disp()
{
cout<<"三角形面积:"<<bottom * height / 2;
}
};

class square:public base
{
private :
double a;
square(double a1)
{
a = a1;
}
void disp()
{
cout<<"正方形面积:"<<a * a;
}
}

#define pi 3.141
class circle:public base
{
private:
double r;
circle(double r1)
{
r = r1;
}
void disp()
{
cout<<"圆形面积:"<<pi * r * r;
}
}追问

程序有错啊,可以运行一下么?

追答

#include
using namespace std;

class base
{
public:
virtual void disp();
};

class triangle:public base
{
private:
double bottom;
double height;
public:
triangle(double b,double h)
{
bottom = b;
height = h;
}
void disp()
{
coutdisp();
p = &s;
p->disp();
p = &c;
p->disp();

return 0;
}

这是完整的程序,你编成release版本试一下,运行结果图为:

相似回答