Advertisement
allia

пересечение медиан

Nov 10th, 2020 (edited)
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.60 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <iomanip>
  4.  
  5. using namespace std;
  6.  
  7. struct direct
  8. {
  9.  double a = 0, b = 0;
  10.  double parametr = 0;
  11. };
  12.  
  13. struct vershina
  14. {
  15.   double x, y;
  16. };
  17.  
  18.  vershina seredina_storon (vershina one, vershina two)
  19.  {
  20.   vershina seredina;
  21.  
  22.   seredina.x = (one.x + two.x)/2;
  23.   seredina.y = (one.y + two.y)/2;
  24.  
  25.   return seredina;
  26.  }
  27.  
  28. direct mediana (vershina head, vershina seredina)
  29. {
  30.   direct stright;
  31.   if(head.x - seredina.x != 0)
  32.   {
  33.     stright.a = (head.y - seredina.y)/(head.x - seredina.x);
  34.     stright.b = head.y - stright.a*head.x;
  35.   }
  36.   else stright.parametr = head.x;
  37.  
  38.   return stright;
  39. }
  40.  
  41. vershina point (direct mediana_1, direct mediana_2)
  42. {
  43.  vershina otvet;
  44.  
  45.  if (mediana_1.parametr == 0 && mediana_2.parametr == 0)
  46.    {
  47.      otvet.x = (mediana_2.b - mediana_1.b)/(mediana_1.a - mediana_2.a);
  48.      otvet.y = mediana_1.a*otvet.x + mediana_1.b;
  49.    }
  50.    else if (mediana_1.parametr != 0)
  51.    {
  52.      otvet.x = mediana_1.parametr;
  53.      otvet.y = mediana_2.a*otvet.x + mediana_2.b;
  54.    }
  55.    else
  56.    {
  57.      otvet.x = mediana_2.parametr;
  58.      otvet.y = mediana_1.a*otvet.x + mediana_1.b;
  59.    }
  60.  
  61.  return otvet;
  62. };
  63.  
  64. int main ()
  65. {
  66.   vershina A, B, C, toshka;
  67.  
  68.   cin >> A.x >> A.y >> B.x >> B.y >> C.x >> C.y;
  69.  
  70.   vershina middleAB = seredina_storon(A, B);
  71.   vershina middleBC = seredina_storon(B, C);
  72.  
  73.   direct medianaA = mediana(A, middleBC);
  74.   direct medianaC = mediana(C, middleAB);
  75.  
  76.   toshka = point(medianaA, medianaC);
  77.  
  78.   cout.precision(6);
  79.  
  80.   cout << fixed << toshka.x << " ";
  81.   cout << fixed << toshka.y;
  82.  
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement