- #include <iostream>
- #include <cstdlib>
- #include <math.h>
- using namespace std;
- class Punkt{
- int x,y;
- public:
- Punkt() { x=y=0; }
- Punkt(int xx, int yy){ x=xx; y=yy; }
- Punkt(const Punkt& p) { x=p.x; y=p.y; }
- ~Punkt();
- int givex(){return x;}
- int givey(){return y;}
- void przesun(int ax, int ay){
- x+=ax;
- y+=ay;
- }
- };
- class Linia {
- private: Punkt *p1, *p2;
- public:
- Linia() { p1=new Punkt(0,0); p2=new Punkt(0,0); }
- Linia(Punkt a, Punkt b){ p1=new Punkt(a); p2=new Punkt(b);}
- Linia(const Linia &l) { p1=l.p1; p2=l.p2; }
- ~Linia(){ delete p1; delete p2;}
- Punkt* getP1() {return p1;}
- Punkt* getP2(){return p2;}
- void przesunLinie(int ax, int ay) {
- p1->przesun(ax,ay);
- p2->przesun(ax,ay);
- }
- };
- class Figura{
- protected: char kolor;
- public:
- Figura(char k){ kolor=k; }
- };
- class Trojkat: public Figura {
- Linia *l1,*l2,*l3;
- public: Trojkat (char k, Punkt p1, Punkt p2, Punkt p3) : Figura(k){
- l1=new Linia(p1,p2); l2=new Linia(p2,p3); l3=new Linia (p1,p3); }
- // Trojkat (char k, Punkt p1, Punkt p2, Punkt p3) { l1=new Linia(p1,p2); l2=new Linia(p2,p3); l3=new Linia (p1,p3); }
- void przesunTrojkat(int ax,int ay)
- {
- l1->przesunLinie(ax,ay);
- l2->przesunLinie(ax,ay);
- l3->przesunLinie(ax,ay);
- }
- int obwodTrojkata() {
- int bok1,bok2,bok3,obwod;
- bok1=bok2=bok3=obwod=0;
- int x1 = (l1->getP1()->givex());
- int y1= (l1->getP1()->givey());
- int x2 = (l1->getP2()->givex());
- int y2= (l1->getP2()->givey());
- int x3 = l2->getP2()->givex();
- int y3= l2->getP2()->givey();
- bok1=sqrt( (x2-x1)*(x2-x1)-(y2-y1)*(y2-y1) );
- bok2=sqrt( (x3-x2)*(x3-x2)-(y3-y2)*(y3-y2) );
- bok3=sqrt( (x3-x1)*(x3-x1)-(y3-y1)*(y3-y1) );
- obwod=bok1+bok2+bok3;
- return obwod;
- }
- double obliczPole()
- {
- int bok1,bok2,bok3,obwod;
- bok1=bok2=bok3=obwod=0;
- double pole=0;
- int x1 = (l1->getP1()->givex());
- int y1= (l1->getP1()->givey());
- int x2 = (l1->getP2()->givex());
- int y2= (l1->getP2()->givey());
- int x3 = l2->getP2()->givex();
- int y3= l2->getP2()->givey();
- bok1=sqrt( (x2-x1)*(x2-x1)-(y2-y1)*(y2-y1) );
- bok2=sqrt( (x3-x2)*(x3-x2)-(y3-y2)*(y3-y2) );
- bok3=sqrt( (x3-x1)*(x3-x1)-(y3-y1)*(y3-y1) );
- double p=(bok1+bok2+bok3)/2;
- pole=sqrt(p*(p-bok1)*(p-bok2)*(p-bok3));
- return pole;
- }
- };
- class Czworokat: public Figura{
- private: Linia *l1,*l2,*l3,*l4;
- public: Czworokat(char k, Punkt p1, Punkt p2, Punkt p3, Punkt p4): Figura(k){
- l1=new Linia(p1,p2);
- l2=new Linia(p2,p3);
- l3=new Linia (p3,p4);
- l4=new Linia(p1,p4);
- }
- void przesunCzworokat(int ax,int ay)
- {
- l1->przesunLinie(ax,ay);
- l2->przesunLinie(ax,ay);
- l3->przesunLinie(ax,ay);
- l4->przesunLinie(ax,ay);
- }
- };
- class Prostokat: public Czworokat{
- //Prostokat(char k, int dlugosc, int szerokosc):Czworokat{
- double pole;
- int obwod;
- public: Prostokat(char k, Punkt p1, Punkt p2) : Czworokat(k, p1,Punkt(p1.givex(), p2.givey()), Punkt(p2.givex(), p1.givey()), p2){}
- };
- class Kwadrat: public Prostokat{
- // Kwadrat(Punkt p, int dlugosc) { }
- Kwadrat(char k, Punkt p1, int dlugosc) : Prostokat(k, p1,Punkt(p1.givex() + dlugosc, p1.givey() + dlugosc)){}
- };
- int main()
- {
- Linia l1((5,5),(3,3));
- Czworokat cz('n', (0,0),(0,3),(3,0),(3,3));
- system("pause");
- return 0;
- }