第六章



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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值