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

编写一个程序计算三角形、正方形和圆形三种图形的面积。依题意,可以抽象出一个基类base,在其中说明一个虚函数,用来求面积。并利用单接口、多实现版本设计各个图形面积的方法。... 编写一个程序计算三角形、正方形和圆形三种图形的面积。依题意,可以抽象出一个基类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
展开
 我来答
当代教育科技知识库
高能答主

2019-08-22 · 擅长科技新能源相关技术,且研究历史文化。
当代教育科技知识库
采纳数:1828 获赞数:387378

向TA提问 私信TA
展开全部

#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;
}

扩展资料:

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

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

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

philafox
推荐于2016-12-01 · TA获得超过253个赞
知道小有建树答主
回答量:124
采纳率:100%
帮助的人:94.3万
展开全部
#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 编译通过。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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版本试一下,运行结果图为:
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式