ex7-5.cpp - Example 7-5 Inheritance - triangle classes

// File: ex7-5.cpp

#include <iostream>
#include <cmath>
using namespace std;

class triangle
{
  protected:
	 double a,b,c;
  public:
	 triangle(double s1,double s2,double s3) : a(s1), b(s2), c(s3) {}
	 void show() { cout << "triangle " << this << "  sides " <<
		a << ' ' << b << ' ' << c << endl; }
	 void area(void);
};

void triangle::area(void)
{
  double s = (a + b + c)/2.0;	//	s = semiperimater
  cout << " area of " << this << " = "
		 << (sqrt(s*(s-a)*(s-b)*(s-c))) << endl << endl;
  return;
}


class isosceles : public triangle
{
  public:
	 isosceles(double base, double leg) : triangle(base,leg,leg) {}
};
class equilateral : public isosceles
{
  public:
	 equilateral(double side) : isosceles(side,side) {}
};



int main(void)
{
  triangle t1(3,4,5);
  t1.show();
  t1.area();
  isosceles t2(2,4);
  t2.show();
  t2.area();
  equilateral t3(5);
  t3.show();
  t3.area();
  return 0;
}



CIS27: Programming in C++    Instructor: Joe Bentley