4.
#include <iostream>
using namespace std;
class Shape
{
public:
virtual double area() const =0;
};
class Circle:public Shape
{
public:
Circle(double r):radius(r){}
virtual double area() const {return 3.14159*radius*radius;};
protected:
double radius;
};
class Rectangle:public Shape
{
public:
Rectangle(double w,double h):width(w),height(h){}
virtual double area() const {return width*height;}
protected:
double width,height;
};
class Triangle:public Shape
{
public:
Triangle(double w,double h):width(w),height(h){}
virtual double area() const {return 0.5*width*height;}
protected:
double width,height;
};
int main()
{ Circle c1(12.6),c2(4.9);
Rectangle r1(4.5,8.4),r2(5.0,2.5);
Triangle t1(4.5,8.4),t2(3.4,2.8);
Shape *pt[6]={&c1,&c2,&r1,&r2,&t1,&t2};
double areas=0.0;
for(int i=0;i<6;i++)
{
areas=areas+pt[i]->area();
}
cout<<"总面积="<<areas<<endl;
return 0; }
5.
#include<iostream>
using namespace std;
class Shape//抽象基类
{
public:
virtual float area()const=0;
virtual void display()const=0;
};
class Circle:public Shape// 园面积
{
public:
Circle(double a):r(a){}
virtual float area()const{return 3.14*r*r;}
virtual void display()const
{
cout<<"圆面积"<<area()<<endl;
}
private:
double r;
};
class Rectangle:public Shape//矩形面积
{
public:
Rectangle(double a,double b):l(a),w(b){}
virtual float area()const{return l*w;}
virtual void display()const
{
cout<<"矩形面积"<<area()<<endl;
}
private:
double l;
double w;
};
class Triangle:public Shape//三角形面积
{
public:
Triangle(double a,double b):d(a),h(b){}
virtual float area()const{return (d*h)/2;}
virtual void display()const
{
cout<<"三角形面积"<<area()<<endl;
}
private:
double d;
double h;
};
class Square:public Shape//正方形面积
{
public:
Square(double a):a1(a){}
virtual float area()const{return a1*a1;}
virtual void display()const
{
cout<<"正方形面积"<<area()<<endl;
}
private:
double a1;
};
class Trapezoid:public Shape//梯形面积
{
public:
Trapezoid(double sd,double xd,double h):shad(sd),xiad(xd),hight(h){}
virtual float area()const{return ((shad+xiad)*hight)/2;}
virtual void display()const
{
cout<<"梯形面积"<<area()<<endl;
}
private:
double shad;
double xiad;
double hight;
};
int main()
{
Circle c1(4);
Rectangle r1(3,6);
Triangle t1(2.5,5);
Square s1(3.4);
Trapezoid tr1(3.2,4.5,7);
Shape *p[5]={&c1,&r1,&t1,&s1,&tr1};
int i;
double m=0.0;
for (i=0;i<5;i++)
{
p[i]->display();
m=m+p[i]->area();
}
cout<<"总面积:"<<m<<endl;
}