Untitled

 avatar
unknown
c_cpp
10 months ago
1.9 kB
4
Indexable
#include <iostream>
#include <cmath>

class Ksztalt
{
public:
    virtual void Rysuj() = 0;

    double Pole()
    {
        return 0.0;
    }

    double Pole( double promien )
    {
        return M_PI * promien * promien;
    }

    double Pole( double wysokosc, double szerokosc )
    {
        return wysokosc * szerokosc;
    }
};

class Kolo : public Ksztalt
{
private:
    double promien;

public:
    Kolo( double r ) : promien( r ) {}

    void Rysuj() override
    {
        std::cout << "Rysuj kolo... " << std::endl;
    }

    double LiczPole()
    {
        return Pole( promien );
    }
};

class Kwadrat : public Ksztalt
{
private:
    double bok;

public:
    Kwadrat(double b) : bok(b) {}

    void Rysuj() override
    {
        std::cout << "Rysuj kwadrat... " << std::endl;
    }

    double LiczPole()
    {
        return Pole( bok, bok );
    }
};

class Prostokat : public Ksztalt
{
private:
    double szerokosc;
    double wysokosc;

public:
    Prostokat(double s, double w) : szerokosc(s), wysokosc(w) {}

    void Rysuj() override
    {
        std::cout << "Rysuj prostokat... " << std::endl;
    }

    double LiczPole()
    {
        return Pole( wysokosc, szerokosc );
    }
};

class Punkt
{
private:
    int x;
    int y;

public:
    Punkt( int xx, int yy ) : x( xx ), y( yy )
    {

    }

    friend class Kolo;
    friend class Kwadrat;
};

int main()
{
    Kolo kolo(5.0);
    Kwadrat kwadrat(4.0);
    Prostokat prostokat(3.0, 6.0);

    kolo.Rysuj();
    std::cout << "Pole kola: " << kolo.LiczPole() << std::endl;

    kwadrat.Rysuj();
    std::cout << "Pole kwadratu: " << kwadrat.LiczPole() << std::endl;

    prostokat.Rysuj();
    std::cout << "Pole prostokata: " << prostokat.LiczPole() << std::endl;

    return 0;
}
Editor is loading...
Leave a Comment