Create a base class called shape. Use this class to store two double type values that could be used to compute the area of figures. Derive two specific classes called triangle and rectangle from the base shape. Add to the base class, a member function get_data() to initialize base class data members and another member function display_area() to compute and display the area of figures. Make display_area() as a virtual function and redefine this function in the derived classes to suit their requirements.
Using these three classes, design a program that will accept dimensions of a triangle or a rectangle interactively, and display the area.
Remember the two values given as input will be treated as lengths of two sides in the case of rectangles and as base and height in the case of triangles, and used as follows:
Area of rectangle = x * y
Area of triangle = ½ * x * y
#include<iostream> #include<iomanip> using namespace std; class shape { public: double x,y; public: void get_data() { cin>>x>>y; } double get_x(){return x;} double get_y(){return y;} virtual void display_area(){} }; class triangle:public shape { public: void display_area() { double a; a=(x*y)/2; cout<<" Area of triangle = "<<a<<endl; } }; class rectangle:public shape { public: void display_area() { double a; a=x*y; cout<<" Area of rectangle = "<<a<<endl; } }; int main() { shape *s[2]; triangle t; s[0]=&t; rectangle r; s[1]=&r; cout<<" Enter the value of x & y for triangle: "; s[0]->get_data(); cout<<" Enter the value of x & y for rectangle: "; s[1]->get_data(); s[0]->display_area(); s[1]->display_area(); return 0; }
OUTPUT
Enter the value of x & y for triangle: 12 26
Enter the value of x & y for rectangle: 24 14
Area of triangle = 156
Area of rectangle = 336
Extend the above program to display the area of circles. This requires addition of a new derived class ‘circle’ that computes the area of a circle. Remember, for a circle we need only one value, its radius, but the get_data() function in base class requires two values to be passed.(Hint: Make the second argument of get_data() function as a default one with zero value.)
#include<iostream> #include<iomanip> #define pi 3.1416 using namespace std; class shape { public: double x,y; public: void get_data(double a,double b) { x=a; y=b; } double get_x(){return x;} double get_y(){return y;} virtual void display_area(){} }; class triangle:public shape { public: void display_area() { double a; a=(x*y)/2; cout<<" Area of triangle = "<<a<<endl; } }; class rectangle:public shape { public: void display_area() { double a; a=x*y; cout<<" Area of rectangle = "<<a<<endl; } }; class circle:public shape { public: void display_area() { double a; a=pi*x*x; cout<<" Area of circle = "<<a<<endl; } }; int main() { shape *s[3]; triangle t; s[0]=&t; rectangle r; s[1]=&r; circle c; s[2]=&c; double x,y; cout<<" Enter the value of x & y for triangle: "; cin>>x>>y; s[0]->get_data(x,y); cout<<" Enter the value of x & y for rectangle: "; cin>>x>>y; s[1]->get_data(x,y); cout<<" Enter the radius of circle : "; double rd; cin>>rd; s[2]->get_data(rd,0); cout<<endl<<endl; s[0]->display_area(); s[1]->display_area(); s[2]->display_area(); return 0; }
OUTPUT
Enter the value of x & y for triangle: 10 24
Enter the value of x & y for rectangle: 14 23
Enter the radius of circle : 12
Area of triangle = 120
Area of rectangle = 322
Area of circle = 452.3904
Run the program above with the following modifications:
- (a) Remove the definition of display_area() from one of the derived
classes. - (b) In addition to the above change, declare the display_area() as
virtual in the base class shape.
Comment on the output in each case.
#include<iostream> #include<iomanip> #define pi 3.1416 using namespace std; class shape { public: double x,y; public: void get_data(double a,double b) { x=a; y=b; } double get_x(){return x;} double get_y(){return y;} virtual void display_area(){} }; class triangle:public shape { public: void display_area() { double a; a=(x*y)/2; cout<<" Area of triangle = "<<a<<endl; } }; class rectangle:public shape { public: void display_area() { double a; a=x*y; cout<<" Area of rectangle = "<<a<<endl; } }; class circle:public shape { public: void display_area() { double a; a=pi*x*x; cout<<" Area of circle = "<<a<<endl; } }; int main() { shape *s[3]; triangle t; s[0]=&t; rectangle r; s[1]=&r; circle c; s[2]=&c; double x,y; cout<<" Enter the value of x & y for triangle: "; cin>>x>>y; s[0]->get_data(x,y); cout<<" Enter the value of x & y for rectangle: "; cin>>x>>y; s[1]->get_data(x,y); cout<<" Enter the radius of circle : "; double rd; cin>>rd; s[2]->get_data(rd,0); cout<<endl<<endl; s[0]->display_area(); s[1]->display_area(); s[2]->display_area(); return 0; }
OUTPUT
Enter the value of x & y for triangle: 28 32
Enter the value of x & y for rectangle: 25 36
Enter the radius of circle : 20
Area of triangle = 448
Area of rectangle = 900
Area of circle = 1256.64
Next Previous