MeehoweCK

Untitled

Apr 2nd, 2021
638
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.68 KB | None | 0 0
  1. // main.cpp
  2. #include <iostream>
  3. #include "Trojkat.h"
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.     Punkt A, B, C;
  10.     A.x = 0;
  11.     A.y = 0;
  12.     B.x = 10;
  13.     B.y = 0;
  14.     C.x = 5;
  15.     C.y = 5;
  16.     Trojkat trojkat(A, B, C);
  17.     cout << trojkat.get_obwod() << endl;
  18.     cout << trojkat.get_pole() << endl;
  19.     cout << trojkat.rownoboczny() << endl;
  20.     cout << trojkat.rownoramienny() << endl;
  21.     cout << trojkat.prostokatny() << endl;
  22.     return 0;
  23. }
  24.  
  25. // Trojkat.h
  26. #ifndef TROJKAT_H
  27. #define TROJKAT_H
  28. #include "../head.h"
  29.  
  30. class Trojkat
  31. {
  32.         friend double dlugosc(Punkt, Punkt);
  33.     public:
  34.         Trojkat(Punkt, Punkt, Punkt);
  35.         void set_points(Punkt, Punkt, Punkt);
  36.         double get_pole() const;
  37.         double get_obwod() const;
  38.         bool rownoboczny() const;
  39.         bool rownoramienny() const;
  40.         bool prostokatny() const;
  41.         bool przesun_trojkat(Punkt);
  42.     private:
  43.         Punkt A;
  44.         Punkt B;
  45.         Punkt C;
  46. };
  47.  
  48. #endif // TROJKAT_H
  49.  
  50. // Trojkat.cpp
  51. #include "Trojkat.h"
  52. #include <cmath>
  53.  
  54. /*class Trojkat
  55. {
  56.         friend double dlugosc(Punkt, Punkt);
  57.     public:
  58.         Trojkat(Punkt, Punkt, Punkt);               ok
  59.         void set_points(Punkt, Punkt, Punkt);       ok
  60.         double get_pole() const;                    ok
  61.         double get_obwod() const;                   ok
  62.         bool rownoboczny() const;                   ok
  63.         bool rownoramienny() const;                 ok
  64.         bool prostokatny() const;                   ok
  65.         bool przesun_trojkat(Punkt);                ok
  66.     private:
  67.         Punkt A;
  68.         Punkt B;
  69.         Punkt C;
  70. };*/
  71.  
  72. double dlugosc(Punkt A, Punkt B)
  73. {
  74.     return pow((A.x - B.x)*(A.x - B.x) + (A.y - B.y)*(A.y - B.y), 0.5);
  75. }
  76.  
  77. Trojkat::Trojkat(Punkt a, Punkt b, Punkt c) : A(a), B(b), C(c)
  78. {
  79. }
  80.  
  81. double Trojkat::get_obwod() const
  82. {
  83.     return dlugosc(A, B) + dlugosc(B, C) + dlugosc(A, C);
  84. }
  85.  
  86. double Trojkat::get_pole() const
  87. {
  88.     double p = get_obwod() / 2;
  89.     double a = dlugosc(B, C);
  90.     double b = dlugosc(A, C);
  91.     double c = dlugosc(A, B);
  92.     return pow(p*(p - a) * (p - b) * (p - c), 0.5);
  93. }
  94.  
  95. void Trojkat::set_points(Punkt a, Punkt b, Punkt c)
  96. {
  97.     A = a;
  98.     B = b;
  99.     C = c;
  100. }
  101.  
  102. bool Trojkat::rownoboczny() const
  103. {
  104.     double a = dlugosc(B, C);
  105.     double b = dlugosc(A, C);
  106.     double c = dlugosc(A, B);
  107.     if(a != b || a != c || b != c)
  108.         return false;
  109.     return true;
  110. }
  111.  
  112. bool Trojkat::rownoramienny() const
  113. {
  114.     double a = dlugosc(B, C);
  115.     double b = dlugosc(A, C);
  116.     double c = dlugosc(A, B);
  117.     if(a == b || a == c || b == c)
  118.         return true;
  119.     return false;
  120. }
  121.  
  122. bool Trojkat::prostokatny() const
  123. {
  124.     double a = dlugosc(B, C);
  125.     double b = dlugosc(A, C);
  126.     double c = dlugosc(A, B);
  127.     double przyp1, przyp2;
  128.     if(a >= b && a >= c)
  129.     {
  130.         przyp1 = b;
  131.         przyp2 = c;
  132.     }
  133.     else if(b >= a && b >= c)
  134.     {
  135.         przyp1 = a;
  136.         przyp2 = c;
  137.     }
  138.     else
  139.     {
  140.         przyp1 = a;
  141.         przyp2 = b;
  142.     }
  143.     if(przyp1 * przyp2 / 2 == get_pole())
  144.         return true;
  145.     return false;
  146. }
  147.  
  148. bool Trojkat::przesun_trojkat(Punkt wektor)
  149. {
  150.     if((A.x + wektor.x < 0) || (A.y + wektor.y < 0) || (B.x + wektor.x < 0) || (B.y + wektor.y < 0) || (C.x + wektor.x < 0) || (C.y + wektor.y < 0))
  151.         return false;
  152.     A.x += wektor.x;
  153.     A.y += wektor.y;
  154.     B.x += wektor.x;
  155.     B.y += wektor.y;
  156.     C.x += wektor.x;
  157.     C.y += wektor.y;
  158.     return true;
  159. }
  160.  
  161. // head.h
  162. #ifndef HEAD_H_INCLUDED
  163. #define HEAD_H_INCLUDED
  164.  
  165. class Trojkat;
  166.  
  167. struct Punkt
  168. {
  169.     unsigned x;
  170.     unsigned y;
  171. };
  172.  
  173. double dlugosc(Punkt, Punkt);
  174.  
  175. #endif // HEAD_H_INCLUDED
Advertisement
Add Comment
Please, Sign In to add comment