1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
   | #include <iostream>
#include <cmath>
 
using namespace std;
 
class Par {
private:
  double left;
  double right;
public:
 
  Par() { left = 0; right = 0; }
 
  Par(double l, double r)
  { left = l; right = r; }
 
  virtual void set_left(double n) { left = n; }
  virtual void set_right(double n) { right = n; }
  virtual void set_pair(double n, double m) { set_left(n); set_right(m); }
 
  virtual double get_left() const { return left; }
  virtual double get_right() const { return right; }
 
  virtual void print() {
  cout << " ( " << get_left() << " , " << get_right() << " ) " << endl;	
  }
  };
 
class Ponto : public Par {
 
public:
 
  Ponto() : Par() {};
  Ponto(double x, double y) : Par(x,y) {};
 
  virtual double distance(Ponto p) 
  {
    return sqrt(((get_left() - p.get_left()) * (get_left() - p.get_left())) + 
		((get_right() - p.get_right()) * (get_right() - p.get_right())));
  }
 };
 
class Poligono {
private:
  int num_points;
protected:
  Ponto p[100];
public:
  Poligono() { num_points = 0; }
  Poligono(int n)
  { 
    num_points = n;
  }
 
  virtual double Perimeter() 
  {
    int i;
    double pm;
    for (i=0,pm=0; i<num_points-1; i=i+1)
      pm = pm + p[i].distance(p[i+1]);
    pm = pm + p[num_points-1].distance(p[0]);
    return pm;
  }
  };
 
class Quadrilatero : public Poligono {
private: 
public:
  Quadrilatero(): Poligono(4) {};
  Quadrilatero(Ponto a, Ponto b, Ponto c, Ponto d): Poligono(4)
  {
    p[0] = a;
    p[1] = b;
    p[2] = d;
    p[3] = c;
  }
};
 
int main()
{ Ponto a(0,0);  Ponto b(1,0);  Ponto c(0,1);  Ponto d(1,1);
  Quadrilatero q(a,b,c,d);
  cout << " O perímetro deste quadrilátero é " << q.Perimeter() << "." << endl;
  cout << " Os pontos deste quadrilátero são: " << endl;
  Ponto x;
  x=q.Ponto(1);
  x.print();
  x=q.Ponto(2);
  x.print();
  x=q.Ponto(3);
  x.print();
  x=q.Ponto(4);
  x.print();
} | 
Partager