Risonna

lab2_n6 var2

Oct 27th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.07 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.     float x1, y1, x2, y2, x3, y3, a, b, c, xf1, yf1, xf2, yf2, xf3, yf3, kf1, kf2, kf3, KOEF;
  8.     cout << "x1="; cin >> x1;
  9.     cout << "y1="; cin >> y1;
  10.     cout << "x2="; cin >> x2;
  11.     cout << "y2="; cin >> y2;
  12.     cout << "x3="; cin >> x3;
  13.     cout << "y3="; cin >> y3;
  14.     cout << "a="; cin >> a;
  15.     cout << "b="; cin >> b;
  16.     cout << "c="; cin >> c;
  17.     //По формулам координат середины отрезка находим x и y середин отрезков, на которые опускаются медианы (подробнее - http://www.treugolniki.ru/koordinaty-serediny-otrezka-formula/)
  18.     xf1 = (x2 + x3) / 2;
  19.     xf2 = (x1 + x3) / 2;
  20.     xf3 = (x1 + x2) / 2;
  21.     yf1 = (y2 + y3) / 2;
  22.     yf2 = (y1 + y3) / 2;
  23.     yf3 = (y1 + y2) / 2;
  24.     //далее находим коэффициент наклона прямых, на которых лежат медианы, перед этим проверив правильность координат
  25.     //проверка 1
  26.     if (y1 > yf1)
  27.     {
  28.         if (x1 > xf1)
  29.         {
  30.             kf1 = (y1 - yf1) / (x1 - xf1);
  31.         }
  32.         else
  33.         {
  34.             kf1 = (y1 - yf1) / (xf1 - x1);
  35.         }
  36.     }
  37.     else
  38.     {
  39.         if (x1 > xf1)
  40.         {
  41.             kf1 = (yf1 - y1) / (x1 - xf1);
  42.         }
  43.         else
  44.         {
  45.             kf1 = (yf1 - y1) / (xf1 - x1);
  46.         }
  47.     }
  48.         //проверка 2
  49.     if (y2 > yf2)
  50.     {
  51.         if (x2 > xf2)
  52.         {
  53.             kf2 = (y2 - yf2) / (x2 - xf2);
  54.         }
  55.         else
  56.         {
  57.             kf2 = (y2 - yf2) / (xf2 - x2);
  58.         }
  59.     }
  60.     else
  61.     {
  62.         if (x2 > xf2)
  63.         {
  64.             kf2 = (yf2 - y2) / (x2 - xf2);
  65.         }
  66.         else
  67.         {
  68.             kf2 = (yf2 - y2) / (xf2 - x2);
  69.         }
  70.     }
  71.         //проверка 3
  72.     if (y3 > yf3)
  73.     {
  74.         if (x3 > xf3)
  75.         {
  76.             kf3 = (y3 - yf3) / (x3 - xf3);
  77.         }
  78.         else
  79.         {
  80.             kf3 = (y3 - yf3) / (xf3 - x3);
  81.         }
  82.     }
  83.     else
  84.     {
  85.         if (x3 > xf3)
  86.         {
  87.             kf3 = (yf3 - y3) / (x3 - xf3);
  88.         }
  89.         else
  90.         {
  91.             kf3 = (yf3 - y3) / (xf3 - x3);
  92.         }
  93.     }
  94.     //kf1 = (y1 - yf1) / (x1 - xf1);
  95.     //kf2 = (y2 - yf2) / (x2 - xf2);
  96.     //kf3 = (y3 - yf3) / (x3 - xf3);
  97.  
  98.     //выводим получившиеся значения просто для наглядности
  99.     cout << "kf1=" << kf1<<"\n";
  100.     cout << "kf2=" << kf2<<"\n";
  101.     cout << "kf3=" << kf3 <<"\n";
  102.     //поскольку коэффициент наклона прямой в уравнении вида y=kx+b — это k, то нужно привести ax+by+c=0 к виду y=-(a/b)*x-c/b, -(a/b) — это и есть искомое k
  103.     KOEF = -(a / b);
  104.     //точно так же для наглядности выведем коэффициент наклона заданной прямой
  105.     cout << "KOEF=" << KOEF<<"\n";
  106.     //сравниваем, совпадают ли коэффициенты наклона медиан с коэффициентом наклона заданной прямой
  107.     if (KOEF == kf1 || KOEF == kf2 || KOEF == kf3)
  108.     {
  109.         cout << "Заданная прямая параллельна одной из медиан треугольника\n";
  110.     }
  111.     else
  112.     {
  113.         cout << "Прямая не параллельна ни одной из медиан треугольника\n";
  114.     }
  115. }
Add Comment
Please, Sign In to add comment