Advertisement
Ivan_Moscow

7.1.10.

Jun 2nd, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.59 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. struct point {
  6.     float x, y;
  7. };
  8.  
  9. struct line {
  10.     //Прямая задается функцией y=kx+b. В данном случае для описания прямой
  11.     //нужно только два числа: угловой коэффициент k и числовая константа b
  12.     float k;
  13.     float b;
  14. };
  15.  
  16. point findIntersection (const line &line1, const line &line2) {
  17.     point result;
  18.     //Составляем уравнение k1x+b1 = k2x+b2, и находим x
  19.     result.x = (line2.k - line1.k)/(line1.k - line2.k);
  20.     //Подставляем x и находим y
  21.     result.y = line1.k * result.x + line2.b;
  22.     return result;
  23. }
  24.  
  25. void print (const point &target) {
  26.     cout << "x= " << target.x << ", y= " << target.y << endl;
  27. }
  28.  
  29. int _tmain(int argc, _TCHAR* argv[]) {
  30.     float k1, b1, k2, b2;
  31.     cout << "Enter 'k' and 'b' values for first line: ";
  32.     cin >> k1 >> b1;
  33.     cout << "Enter 'k' and 'b' values for second line: ";
  34.     cin >> k2 >> b2;
  35.     //Проверяем на корректность. Если у прямых одинаковый k, то они
  36.     //параллельны и точек пересечения быть не может
  37.     if (k1==k2) {
  38.         cout << "Incorrect! Lines are parallel!" << endl;
  39.     } else {
  40.         //Если все нормально, ищем пересечение
  41.         line one, two;
  42.         one.k = k1;
  43.         one.b = b1;
  44.         two.k = k2;
  45.         two.b = b2;
  46.         point intersection = findIntersection (one, two);
  47.         cout << "Intersection found at ";
  48.         print (intersection);
  49.     }
  50.     system("pause");
  51.     return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement