Przeładowanie operatora

0

Witam, mam pracę domową dopisać do programu przeładowany operator < który porównuje pola 3 figur i wypisuje które jest największe. Mógłby ktoś napisać mi te kilka linijek? Z góry dzięki, oto ten program:

#include <iostream> //dopisac o operator < ktore porownuje pola figur
using namespace std;

const double PI = 3.1415927;

class figura
{
protected:
float pole;
public:
figura() { pole=0;}
virtual void obliczpole() { cout <<"Figura : nie da sie obliczyc!" <<endl;}
void opisz_figure()
{
cout <<"Opis figury : ";
obliczpole();
}

};

class kolo : public figura
{
float r;
public:
kolo(float promien) {r=promien;}
void obliczpole()
{
pole = PI * (r*r);
cout << "Pole kola = " << pole <<endl;
}

};

class czworokat : public figura
{
protected:
static const int w=4;
public:
czworokat() {}
void obliczpole() { cout <<"Czworokat : nie da sie obliczyc!" << endl;;}
};

class kwadrat: public czworokat
{
float a;
public:
kwadrat (float bok) {a=bok;}
void obliczpole()
{
pole = a*a;
cout << "Pole kwadratu = " << pole <<endl;
}
};

class prostokat: public czworokat
{
float a, b;
public:
prostokat(float bok_a, float bok_b) {a=bok_a; b=bok_b;}
void obliczpole()
{
pole = a*b;
cout << "Pole prostokata = " << pole <<endl;
}
};

int main()
{
figura f;
//f.obliczpole();
czworokat c;
//c.obliczpole();
// testowanie klasy kolo :
kolo kolko(1);
//kolko.obliczpole();
//testowanie klasy kwadrat :
kwadrat kwadrat1(2);
//kwadrat1.obliczpole();
//testowanie klasy prostokat:
prostokat prostokat1(3,4);
//prostokat1.obliczpole();

figura *fp;
fp = &f;
fp->obliczpole();

fp = &c;
fp->obliczpole();

fp = &kolko;
fp->obliczpole();

fp = &kwadrat1;
fp->obliczpole();

fp = &prostokat1;
fp->obliczpole();
cout << "*********************************************\n";

f.opisz_figure();
c.opisz_figure();
kolko.opisz_figure();
kwadrat1.opisz_figure();
prostokat1.opisz_figure();

}

0

Pozwolilem sobie napisac wlasny programik z przeciazonym operatorem <:

class TFigura
{
  protected:
    double FPole;
    TFigura(void):FPole(0){};
    virtual void ObliczPole(void) = 0;
  public:
    bool operator < (TFigura &F1)
    {
      return this -> FPole < F1.FPole;
    }
};

class TKolo : public TFigura
{
  private:
    double FPromien;
  public:
    TKolo(double APromien):FPromien(APromien){};
    void ObliczPole(void)
    {
      FPole = M_PI * pow(FPromien, 2);
    }
};


//I w kodzie

  TKolo K1(5);
  K1.ObliczPole();

  TKolo K2(10);
  K2.ObliczPole();

  bool K1MniejszeK2 = K1 < K2;

1 użytkowników online, w tym zalogowanych: 0, gości: 1