Форум программистов, компьютерный форум, киберфорум
IrineK
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Взаимное расположение двух прямых на плоскости

Запись от IrineK размещена 01.04.2014 в 14:30
Показов 1561 Комментарии 1
Метки c++

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <iomanip>
#include <cmath>
using std::cout;
using std::cin;
using std::fixed;
using std::setprecision;
 
double Det2 (double a, double b, double c, double d)
{   return a*d - b*c;
}
 
int LinesIntersection (double a1, double b1, double c1, double a2, double b2, double c2, double &x, double &y)
{   double D0 = Det2 (a1,b1,a2,b2);
    double Dx = - Det2 (b1,c1, b2,c2);
    double Dy = - Det2 (a1,c1, a2,c2);
    double e = 1e-11; //вещественный "ноль"
 
    if (fabs(D0) < e)
    {   if (fabs(Dx) < e)
            return 0;   //прямые совпадают
        else
            return -1;  //прямые параллельны
    }
 
    x = Dx / D0;
    y = Dy / D0;
    return 1;   //прямые пересекаются
}
 
int main()
{   setlocale (LC_CTYPE, "Russian");
    double a1,b1,c1,a2,b2,c2, x, y;
 
    cout << "Введите коэффициенты уравнений прямых\n";
    cout << "a1 b1 c1:\t";
    cin >> a1 >> b1 >> c1;
    cout << "a2 b2 c2:\t";
    cin >> a2 >> b2 >> c2;
    cin.sync();
 
    x = y = 0.;
    int res = LinesIntersection (a1, b1, c1, a2, b2, c2, x, y);
    switch (res)
    {   case -1:    cout << "Прямые параллельны";
                    break;
        case 0:     cout << "Прямые совпадают";
                    break;  
        case 1:     cout << "Прямые пересекаются: Х = " << fixed << setprecision (4) << x << "  Y = " << y;
    }
    
    cin.get();
    return 0;
}
Метки c++
Размещено в Геометрия
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
  1. Старый комментарий
    Аватар для IrineK
    Две прямые заданы на плоскости уравнениями
    a1 x + b1 y + c1 = 0
    a2 x + b2 y + c2 = 0

    Решая систему методом Крамера, получаем три определителя:
    D0 = a1 * b2 - a2 * b1
    Dx = - b1 * c2 + b2 * c1
    Dy = - a1 * c2 + a2 * c1

    Если D0 = 0 и один из определителей, Dx = 0 или Dy = 0 (если равен один, то будет равен и второй), тогда
    прямые совпадают.

    Если D0 = 0, а Dx и Dy ≠ 0, то прямые параллельны

    Если D0 ≠ 0 прямые пересекаются в одной точке и ее координаты: X = Dx / D0, Y = Dy / D0
    Запись от IrineK размещена 01.04.2014 в 14:47 IrineK вне форума
 
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru