谭书12-4

#include<iostream>
#include<cmath>
using namespace std;
class Shape
{public:
           virtual void printArea()const{}
           virtual void shapeName()const=0;
           
};
class Circle:public Shape
{public:
           Circle(float);
           virtual void shapeName()const{cout<<"Area of Circle is: ";}
           virtual void printArea()const;
 private:
           float radius;
};
Circle::Circle(float r)
{
    radius=r;                    
}
void Circle::printArea()const
{
    cout<<3.14*radius*radius<<endl;                        
}
class Rectangle:public Shape
{public:
           Rectangle(float ,float);
           virtual void shapeName()const{cout<<"Area of Rectangle is: ";}
           virtual void printArea()const;
 private:
           float length;
           float width;
};
Rectangle::Rectangle(float l,float w)
{
    length=l;
    width=w;                           
}
void Rectangle::printArea()const
{
    cout<<length*width<<endl;                           
}
class Triangle:public Shape
{public:
           Triangle(float ,float,float);
           virtual void shapeName()const{cout<<"Area of Rectangle is: ";}
           virtual void printArea()const;
 private:
           float a;
           float b;
           float c;                
};
Triangle::Triangle(float m,float n,float k)
{
      a=m;
      b=n;
      c=k;                         
}
void Triangle::printArea()const
{
    float p;
    p=(a+b+c)/2;
    cout<<sqrt(p*(p-a)*(p-b)*(p-c))<<endl;                          
}
int main()
{
         Circle c(10);
         Rectangle r(5,2);
         Triangle t(3,2,4);
         Shape *pt;
         pt=&c;
         pt->shapeName();
         pt->printArea();
         pt=&r;
         pt->shapeName();
         pt->printArea();
         pt=&t;
         pt->shapeName();
         pt->printArea();
         return 0;          
}

猜你喜欢

转载自blog.csdn.net/cup160828/article/details/72677578