// ejemplo miembros virtuales
#include <iostream.h>

class CPolygon {
protected:
    int width, height;
public:
    void set_values (int a, int b)
    { width=a; height=b; }
    virtual int area (void) =0;
    void printarea (void)
    { cout << this->area() << endl; }
  virtual void enterData() =0;
    
};

class CRectangle: public CPolygon {
public:
    int area (void)
    { return (width * height); }
  void enterData ()
    { 
      cout << "Width: ";
      cin >> width;
      cout << "Length: ";
      cin >> height;
    }
};

class CTriangle: public CPolygon {
public:
    int area (void)
    { return (width * height / 2); }
  void enterData ()
    { 
      cout << "Base: ";
      cin >> width;
      cout << "Height: ";
      cin >> height;
    }
};

int main () {
  CPolygon *p;
  char type;

  cout << "Triangle or Rectange (enter t or r): ";
  cin >> type;

  switch (type) {
  case 't': p = new CTriangle; break;
  case 'r': p = new CRectangle; break;
  }

  p->enterData();
  p->printarea();

  return 0;
}
b


