Напечатать координаты точки пересечения этих прямых, либо сообщить, что эти прямые совпадают, не пересекаются или вовсе не существуют — Pascal(Паскаль)

              Пример 1.6. Две прямые описываются уравнениями
                             a1 x + b1 y + c1  = 0;
                             a2 x + b2 y + c2  = 0.
       Напечатать координаты точки пересечения этих прямых, либо сообщить,
       что эти прямые совпадают, не пересекаются или вовсе не существуют.

                                Система тестов
     ╔═════╦═══════════════════╦═════════════════════╦════════════════════╗
     ║Номер║    Проверяемый    ║ Коэффициенты прямых ║                    ║
     ║теста║      случай       ╟──────────┬──────────╢     Результаты     ║
     ║     ║                   ║ a1 b1 c1 │ a2 b2 c2 ║                    ║
     ╠═════╬═══════════════════╬══════════╪══════════╬════════════════════╣
     ║  1  ║ Первая прямая     ║  0  0  1 │  1  2  2 ║ Это не прямая      ║
     ║     ║ не существует     ║          │          ║                    ║
     ╟─────╫───────────────────╫──────────┼──────────╫────────────────────╢
     ║  2  ║ Вторая прямая     ║  1  2  2 │  0  0  1 ║ Это не прямая      ║
     ║     ║ не существует     ║          │          ║                    ║
     ╟─────╫───────────────────╫──────────┼──────────╫────────────────────╢
     ║  3  ║ Все коэффициенты  ║          │          ║ Это не прямая      ║
     ║     ║ одной или обеих   ║  0  0  0 │  1  2  1 ║   (прямые)         ║
     ║     ║ прямых равны нулю ║          │          ║                    ║
     ╟─────╫───────────────────╫──────────┼──────────╫────────────────────╢
     ║  4  ║ Коэффициенты      ║  1  2  1 │  1  2  1 ║ Прямые совпадают   ║
     ║     ║ попарно равны     ║          │          ║                    ║
     ╟─────╫───────────────────╫──────────┼──────────╫────────────────────╢
     ║  5  ║ Коэффициенты      ║          │          ║                    ║
     ║     ║ попарно           ║  1  2  1 │  2  4  2 ║ Прямые совпадают   ║
     ║     ║ пропорциональны   ║          │          ║                    ║
     ╟─────╫───────────────────╫──────────┼──────────╫────────────────────╢
     ║  6  ║ Прямые            ║  2  3 -1 │  4  6  1 ║ Прямые параллельны ║
     ║     ║ параллельны       ║          │          ║                    ║
     ╟─────╫───────────────────╫──────────┼──────────╫────────────────────╢
     ║  7  ║ Прямые            ║  1  2 -4 │  1 -2  1 ║ x = 1,50, y = 1,25 ║
     ║     ║ пересекаются      ║          │          ║                    ║
     ╚═════╩═══════════════════╩══════════╧══════════╩════════════════════╝
}

 Program Intersection;
   Uses Crt;        {подключение библиотеки Crt }
   Var a1, b1, c1,  {коэффициенты уравнения первой прямой}
       a2, b2, c2,  {коэффициенты уравнения второй прямой}
       x, y : Real; {координаты точки пересечения }
       Test, NTest : Integer;
 BEGIN
   ClrScr;        {очистка экрана}
   Write('Введите количество тестов : ');
   ReadLn(NTest);
   For Test := 1 to NTest do {цикл по всем тестам задачи}
    begin
      Write('Тест ', Test, '. Введите a1, b1, c1 : ');
      ReadLn( a1, b1, c1);
      Write('      Введите a2, b2, c2 : ');
      ReadLn( a2, b2, c2);
      WriteLn; Write('О т в е т : ');
      If ( (a1=0) and (b1=0) ) or ( (a2=0) and (b2=0) )
         then WriteLn( 'это не прямая (прямые). ' )
         else
           if (a1*b2=a2*b1) and (a1*c2=a2*c1) {условие совпадения}
             then WriteLn( 'прямые совпадают.' )
             else
               if a1*b2 = a2*b1 {условие параллельности}
                 then WriteLn('прямые параллельны.')
                 else begin x:=(c1*b2-c2*b1)/(b1*a2-b2*a1);
                            y:=(c2*a1-c1*a2)/(b1*a2-b2*a1);
                            WriteLn('координаты точки пересечения :', 
                                 ' x = ', x : 5 : 2 , ', y = ', y : 5 : 2);
                      end; 
      WriteLn
    end;
   ReadLn
 END.

Leave a Comment

15 − 7 =