问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

vc++ 应用纯虚函数的使用,定义几个派生类如三角形,矩形,圆形等,求出所有形状的总面积。

发布网友 发布时间:2022-04-26 21:42

我来回答

1个回答

热心网友 时间:2023-11-06 14:33

/*Shape是一个几何图形的基类,它至少有求自身周长函数Circumference()和
求自身面积函数Area()。从Shape类派生出Circle类、Ellipse类、Triangle类和
Rectangle类,分别继承基类Shape的Circumference()和Area(),并增加新的成员。
编写主函数,定义各派生类对象,要求用一个函数实现求多派生类对象的周长之和、面积之和。*/
#include<iostream.h>
#include<math.h>
#define PI 3.1415926
class CShape
{
public:
virtual float Circumference()=0;
virtual float Area()=0;
};
class CCircle:public CShape
{
public:
CCircle(float r1)
{
r=r1;
}
float Circumference()
{
return (float)PI*r*2;
}
float Area()
{
return (float)PI*r*r;
}
private:
float r;
};
//L = pi(1.5(a+b)-sqrt(ab)), 其中a,b分别为椭圆长轴和短轴。
class CEllipse:public CShape
{
public:
CEllipse(float a1,float b1)
{
a=a1;
b=b1;
}
float Circumference()
{
float temp1=(float)(1.5)*(a+b);
float temp2=(float)sqrt(a*b);
return (float)PI*(temp1-temp2);
}
float Area()
{
return (float)PI*a*b;
}
private:
float a;
float b;
};
//Triangle面积公式
//s=根号下:p(p-a)(p-b)(p-c) 其中p=1/2(a+b+c) 这个公式叫海*式

class CTriangle:public CShape
{
public:
CTriangle(float a1,float b1,float c1)
{
a=a1;
b=b1;
c=c1;
}
float Circumference()
{
return (a+b+c);
}
float Area()
{
float p=(a+b+c)/2;
return (float)sqrt(p*(p-a)*(p-b)*(p-c));
}
private:
float a;
float b;
float c;
};
class CRectangle:public CShape
{
public:
CRectangle(float a1,float b1)
{
a=a1;
b=b1;
}
float Circumference()
{
return 2*(a+b);
}
float Area()
{
return (float)a*b;
}
private:
float a;
float b;
};

void main()
{
void sum(CShape *p[],int n,float &zc,float &mj);
CShape *p[4];
CCircle q(1.0);//圆
CEllipse w(2.0,1.0);//椭圆
CTriangle e(3.0,4.0,5.0);//三角形
CRectangle r(1.0,2.0);//长方形
p[0]=&q;
p[1]=&w;
p[2]=&e;
p[3]=&r;
float zc=0,mj=0;
sum(p,4,zc,mj);
cout<<"周长之和:"<<zc<<endl;
cout<<"面积之和:"<<mj<<endl;
}
void sum(CShape *p[4],int n,float &zc,float &mj)//分别计算周长,面积总和
{
for(int i=0;i<n;i++)
{
zc+=p[i]->Circumference();/*周长之和*/
mj+=p[i]->Area();/*面积之和*/
}
}
/*希望对你有帮助,上面是题目要求,应该跟你的差不多吧*/

热心网友 时间:2023-11-06 14:33

/*Shape是一个几何图形的基类,它至少有求自身周长函数Circumference()和
求自身面积函数Area()。从Shape类派生出Circle类、Ellipse类、Triangle类和
Rectangle类,分别继承基类Shape的Circumference()和Area(),并增加新的成员。
编写主函数,定义各派生类对象,要求用一个函数实现求多派生类对象的周长之和、面积之和。*/
#include<iostream.h>
#include<math.h>
#define PI 3.1415926
class CShape
{
public:
virtual float Circumference()=0;
virtual float Area()=0;
};
class CCircle:public CShape
{
public:
CCircle(float r1)
{
r=r1;
}
float Circumference()
{
return (float)PI*r*2;
}
float Area()
{
return (float)PI*r*r;
}
private:
float r;
};
//L = pi(1.5(a+b)-sqrt(ab)), 其中a,b分别为椭圆长轴和短轴。
class CEllipse:public CShape
{
public:
CEllipse(float a1,float b1)
{
a=a1;
b=b1;
}
float Circumference()
{
float temp1=(float)(1.5)*(a+b);
float temp2=(float)sqrt(a*b);
return (float)PI*(temp1-temp2);
}
float Area()
{
return (float)PI*a*b;
}
private:
float a;
float b;
};
//Triangle面积公式
//s=根号下:p(p-a)(p-b)(p-c) 其中p=1/2(a+b+c) 这个公式叫海*式

class CTriangle:public CShape
{
public:
CTriangle(float a1,float b1,float c1)
{
a=a1;
b=b1;
c=c1;
}
float Circumference()
{
return (a+b+c);
}
float Area()
{
float p=(a+b+c)/2;
return (float)sqrt(p*(p-a)*(p-b)*(p-c));
}
private:
float a;
float b;
float c;
};
class CRectangle:public CShape
{
public:
CRectangle(float a1,float b1)
{
a=a1;
b=b1;
}
float Circumference()
{
return 2*(a+b);
}
float Area()
{
return (float)a*b;
}
private:
float a;
float b;
};

void main()
{
void sum(CShape *p[],int n,float &zc,float &mj);
CShape *p[4];
CCircle q(1.0);//圆
CEllipse w(2.0,1.0);//椭圆
CTriangle e(3.0,4.0,5.0);//三角形
CRectangle r(1.0,2.0);//长方形
p[0]=&q;
p[1]=&w;
p[2]=&e;
p[3]=&r;
float zc=0,mj=0;
sum(p,4,zc,mj);
cout<<"周长之和:"<<zc<<endl;
cout<<"面积之和:"<<mj<<endl;
}
void sum(CShape *p[4],int n,float &zc,float &mj)//分别计算周长,面积总和
{
for(int i=0;i<n;i++)
{
zc+=p[i]->Circumference();/*周长之和*/
mj+=p[i]->Area();/*面积之和*/
}
}
/*希望对你有帮助,上面是题目要求,应该跟你的差不多吧*/
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
第二次世界大战进一步爆发的标志是( )。 第二次世界大战扩大到最大规模、成为一场名符其实的世界大战的标志是... 第二次世界大战达到最大规模的标志是 [ ] A.德军突袭波兰,英法对德宣战... 笔记本电脑连接蓝牙音箱,小爱小度亲测有效!台式电脑估计也可以。_百度... 小爱音箱怎么连接到电脑上? 小爱音箱2怎么连接电脑? 如何将小爱音箱和电脑连接 ...打开文件 右击就能打印 现在右键的命令没有打印这一项 苹果雷雳4Pro 连接线 1m 评测:集快充、数据传输、视频传输于一身_百... 有一个健康问题我很想问一下大家,希望大家给我指导一下,如有答得对的... 应届毕业生考公务员真的比非应届生有优势吗? C++ 中虚函数多态的使用场景有哪些 今年应届毕业生考公务员会有优势吗? QQ联系人背景怎么设置 49. 虚函数有什么应用?说明虚函数和重载函数的区别 应届毕业生报考公务员有优势吗 C++虚函数应用 公务员考试应届生六大优势有哪些 虚函数定义的基类指针既然要指向对象的地址,那虚函数还有什么用,直接调 ... 国家公务员考试应届毕业生优势在哪里? 关于c++虚函数声明与应用问题(请赐教) 2020年国家公务员考试应届毕业生优势有哪些? VC++中虚函数的作用??有用吗?谢谢高手指点!! 应届生报考公务员考试有什么优势? 有关虚函数 c++中的纯虚函数与虚函数在应用上有什么差别?? 公务员为何得到那么多人的追捧?应届生有哪些优势? 为什么说应届生考公务员最有优势? C++虚函数的应用 应届生考公务员的优势是什么? 怎么把QQ联系人列表的背景换成自己喜欢的 我是2019年应届毕业生,考公务员有优势吗? 手机qq联系人背景怎么设置 应届毕业生考公务员有什么好处? 下载什么软件可以让手机QQ联系人列表变自定义背景 QQ上联系人背景怎样设置 手机qq联系人的背景怎么换 qq联系人那背景怎么换 初级会计证能参加工作吗? 初级会计师证考下来之后,大概可以找到什么样的工作?我没有什么经验_百... 考下初级会计证书就能找到好工作吗 我不是会计专业,只考一个初级会计证书能够进入相关行业工作吗?_百度... 几年前用的qq怎么找回 湖南益阳沅江市的车管所在周六周日的时候还能办理驾驶证的更换等业务吗? C1驾照到期换证需要什么手续 驾驶证c1换证需要办理什么手续 C1驾驶证过期,换证需要哪些东西。 歌曲后期制作都需要什么软件 新版的淘宝微淘收藏在哪里 电音和auto tune有区别吗?