Chapter12——编写一个程序,求面积和
2017-05-09 16:44
197 查看
编写一个程序,定义抽象基类Shape,由它派生出5个派生类:Circle,Square,Rectangle,Trapezoid,Triangle。用虚函数分别计算集中图形面积,并求他们之和。要求使用基类指针数组,使它每一个元素指向一个派生类对象。
这个题目和上一题比较相似,我就直接拿上题程序来用,忽略Square,Trapezoid类,程序如下:
这个题目和上一题比较相似,我就直接拿上题程序来用,忽略Square,Trapezoid类,程序如下:
#include<iostream> using namespace std; class Shape { public: virtual double area()=0; virtual void shapename()=0; }; class Circle:public Shape { public: Circle(double r=1):radius(r){} virtual void shapename(){cout<<"Circle_area=";} virtual double area(){return 3.14159*radius*radius;} friend ostream&operator <<(ostream&,Circle&); protected: double radius; }; ostream&operator <<(ostream&output,Circle&c) { output<<c.area()<<endl; return output; } class Rectangle:public Shape { public: Rectangle(double a=1,double b=1):length(a),width(b){} virtual void shapename(){cout<<"Rectangle_area=";} virtual double area(){return length*width;} friend ostream&operator <<(ostream&,Rectangle&); protected: double length,width; }; ostream&operator <<(ostream&output,Rectangle&re) { output<<re.area()<<endl; return output; } class triangle:public Shape { public: triangle(double a=1,double b=1):base(a),height(b){} virtual void shapename(){cout<<"triangle_area=";} virtual double area(){return 0.5*base*height;} friend ostream&operator <<(ostream&,triangle&); protected: double base,height; }; ostream&operator <<(ostream&output,triangle&tr) { output<<tr.area()<<endl; return output; } void printArea(Shape **p,Circle a,Rectangle b, triangle c) { double sum=0; p[0]=&a; p[1]=&b; p[2]=&c; for(int i=0;i<3 i="" p="" i="" -="">shapename(); cout<<p i="" -="">area()<<endl sum="" p="" i="" -="">area(); } cout<<"sum_area="<<sum<<endl<<endl; } int main() { Shape *p[3]; Circle c(10); Rectangle r(5,10); triangle t(3,4); printArea(p,c,r,t); return 0; } </endl></p></3></iostream>
相关文章推荐
- 用Java编写一个小程序:键盘输入圆的半径,求圆的面积
- C语言程序设计习题 1-12 编写一个程序,以每行一个单词的形式打印其输出。
- Linux_C练习:编写一个程序,求出满足下列条件的四位数:该数是个完全平方数,且第一、三位数字之和为10,第二、四位数字之积为12;
- 5.7 编写一个程序,其中有一个函数指针*parea,通过它分别指向计算圆的面积函数 circle 和矩形面积函数 rect 来计算给定圆的面积和矩形面积。
- 练习1-12:编写一个程序,以每行一个单词的形式打印其输入(C程序设计语言 第2版)
- 练习 1 - 12 编写一个程序,以每行一个单词的形式打印其输入
- 编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果
- 编写一个程序,求出满足下列条件的四位数:该数是个完全平方数,且第一、三位数字之和为10,第二、四位数字之积为12
- 编写一个程序定义抽象类有他派生五个派生类 圆 正方形 矩形 梯形 三角形用函数分别求面积 总面积 要求用基类指针数组
- 如何快速地编写和运行一个属于自己的 MapReduce 例子程序
- Java入门篇(一)——如何编写一个简单的Java程序
- 编写程序包括一个标签、一个文本框和一个按钮,当用户单击按钮时,程序把文本框中的内容复制到标签中
- 编写一个程序输出您的名字及地址。
- 编写多线程程序,模拟多个人通过一个山洞。这个山洞每次只能通过一个人,每个人通过山洞的时间为2秒(sleep)。随机生成10个人,都要通过此山洞,用随机值对应的字符串表示人名,打印输出
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- C语言 编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。
- 《c primer pius》第六章第14题,发现网上好多都有问题,编写一个程序读入一行输入,然后反向打印该行,您可以把输入存储在一个char数组中
- 如何用CodeBlocks分多个文件编写一个C++程序
- c程序:编写程序,其中自定义一函数,用来判断一个整数是否为素数,主函数输入一个数,输出是否为素数
- 编写一个生产者,消费者多线程程序,一个线程随机产生数据,另一个线程显示所产生的数据.