Точки пересечений линий

Уровень сложности:

Программа должна находить точку пересечения двух линий. Даны следующие уравнения: y = ax2 + bx + c и y = dx + k. Как вы уже могли понять, это уравнения линий, где a, b, c, d, k — это числа, которые вводятся с клавиатуры. Необходимо найти значение икса.

Итак необходимо организовать ввод чисел с клавиатуры. После этого, второе уравнение подставить вместо игрика в первое, получися равенство, которое не сложно решается. В итоге, программа должна вернуть два числа: x и y. Вот пример программы:

Исходник предоставил Евгений Привалов :

#include <iostream>
#include <math.h>
#include <iomanip>

using namespace std;

int main()
{
    float a, b, c, d, k, x1, x2, y1, y2;
    setlocale(0, "");
    cout << "y = ax^2+bx+c - первое уравнение. Введите коэффициенты a, b, c" << endl;
    cout << "a = "; cin >> a; cout << "b = "; cin >> b; cout << "c = ";cin >> c;
    cout << "y = dx+k - первое уравнение. Введите коэффициенты d, k" << endl;
    cout << "d = "; cin >> d; cout << "k = "; cin >> k;
    x1 = (-(b-d) + sqrt(pow((b-d),2)-4*a*(c-k))) / (2*a);
    x2 = (-(b-d) - sqrt(pow((b-d),2)-4*a*(c-k))) / (2*a);
    y1 = d*x1+k;
    y2 = d*x2+k;
    if(x1 == x2) cout << "Точка пересечения двух данных линий: ["<< x1 << ", " << y1 << "]" << endl;
    else
    cout << "Данные линии имеют две точки пересечения:" << endl << "[" << x1 << ", " << y1 << "] и "
         << "[" << x2 << ", " << y2 << "]" << endl;
}

Смотрим результат работы программы:

CppStudio.com
y = ax^2+bx+c - первое уравнение. Введите коэффициенты a, b, c
a = 2
b = 2
c = 2
y = dx+k - первое уравнение. Введите коэффициенты d, k
d = 2
k = 2
Точка пересечения двух данных линий: [0, 2]
Следующие статьи помогут вам в решении данной задачи:
Автор: Marienko L.
Дата: 13.01.2014
Поделиться:

Комментарии

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.