Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- struct point {
- float x, y;
- };
- struct line {
- //Прямая задается функцией y=kx+b. В данном случае для описания прямой
- //нужно только два числа: угловой коэффициент k и числовая константа b
- float k;
- float b;
- };
- point findIntersection (const line &line1, const line &line2) {
- point result;
- //Составляем уравнение k1x+b1 = k2x+b2, и находим x
- result.x = (line2.k - line1.k)/(line1.k - line2.k);
- //Подставляем x и находим y
- result.y = line1.k * result.x + line2.b;
- return result;
- }
- void print (const point &target) {
- cout << "x= " << target.x << ", y= " << target.y << endl;
- }
- int _tmain(int argc, _TCHAR* argv[]) {
- float k1, b1, k2, b2;
- cout << "Enter 'k' and 'b' values for first line: ";
- cin >> k1 >> b1;
- cout << "Enter 'k' and 'b' values for second line: ";
- cin >> k2 >> b2;
- //Проверяем на корректность. Если у прямых одинаковый k, то они
- //параллельны и точек пересечения быть не может
- if (k1==k2) {
- cout << "Incorrect! Lines are parallel!" << endl;
- } else {
- //Если все нормально, ищем пересечение
- line one, two;
- one.k = k1;
- one.b = b1;
- two.k = k2;
- two.b = b2;
- point intersection = findIntersection (one, two);
- cout << "Intersection found at ";
- print (intersection);
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement