Advertisement
Mas2rba

Untitled

Sep 20th, 2023
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 6.97 KB | Source Code | 0 0
  1. program laba_po_infe;
  2.  //Пользователь вводит координаты точек, которые образуют четырёхугольник
  3.  //Координаты точек: A(x1, y1), B(x2, y2), C(x3, y3), D(x4, y4)
  4. var
  5.   x1, y1 : longint;  //координаты точки A
  6.   x2, y2 : longint;  //координаты точки B
  7.   x3, y3 : longint;  //координаты точки C
  8.   x4, y4 : longint;  //координаты точки D
  9.   tgAB, tgBC, tgCD, tgAD: double;  //Тангенсы углов пересечения сторон AB, BC, CD, AD соответственно с осью Х
  10.   prAB_CD, prBC_AD: boolean;  //проверка параллельности сторон
  11.   AB, BC, CD, AD: double;     //длины сторон, образующих четырёхугольник
  12.   ravenstvoAB_CD: boolean;   //проверка равенства AB и CD
  13.   ravenstvoBC_AD : boolean; //проверка равенства BC и AD
  14.   ravenstvoAB_BC: boolean; //проверка равенства AB и BC
  15.   figura: string; //проверка вида четырёхугольника
  16.   ugol_90grad: boolean; //проверка равенства угла 90ам градусам
  17.  
  18. begin
  19.   Write('Координаты точки A:');     //ввод координат точки A
  20.   readln(x1, y1);
  21.   Write('Координаты точки B:');     //ввод координат точки B
  22.   readln(x2, y2);
  23.   Write('Координаты точки C:');     //ввод координат точки C
  24.   readln(x3, y3);
  25.   Write('Координаты точки D:');     //ввод координат точки D
  26.   readln(x4, y4);
  27.  
  28.   AB := sqrt(sqr(x2 - x1) + sqr(y2 - y1));   //вычисление длины стороны AB
  29.   BC := sqrt(sqr(x3 - x2) + sqr(y3 - y2));   //вычисление длины стороны BC
  30.   CD := sqrt(sqr(x4 - x3) + sqr(y4 - y3));   //вычисление длины стороны CD
  31.   AD := sqrt(sqr(x1 - x4) + sqr(y1 - y4));   //вычисление длины стороны AD
  32.  
  33.   if ((x2 - x1) / 2) * ((x3 - x2) / 2) + ((y2 - y1) / 2) * ((y3 - y2) / 2) = 0 then  //проверка угла 90 градусов через скалярное произведние векторов
  34.   begin
  35.     ugol_90grad := True;
  36.   end
  37.   else
  38.     ugol_90grad := False;
  39.  
  40.   if (x2 <> x1) and (x2 <> x3) and (x3 <> x4) and (x4 <> x1) then   //счёт тангенсов углов, если знаменатели не равны 0
  41.   begin
  42.     tgAB := (y2 - y1) / (x2 - x1);
  43.     tgBC := (y3 - y2) / (x3 - x2);
  44.     tgCD := (y4 - y3) / (x4 - x3);
  45.     tgAD := (y1 - y4) / (x1 - x4);
  46.   end
  47.   else
  48.  
  49.   if (x2 = x1) and (x3 = x4) then  //проверка параллельности, если тангенс не существует
  50.   begin
  51.     prAB_CD := True;
  52.   end
  53.   else
  54.     prAB_CD := False;
  55.   if (x2 = x3) and (x4 = x1) then  //проверка параллельности, если тангенс не существует
  56.   begin
  57.     prBC_AD := True;
  58.   end
  59.   else
  60.     prBC_AD := False;
  61.   readln;
  62.  
  63.   if AB = CD then               //проверка равенства сторон AB и CD
  64.   begin
  65.     ravenstvoAB_CD := True;
  66.   end
  67.   else
  68.     ravenstvoAB_CD := False;
  69.   if BC = AD then                //проверка равенства сторон BC и AD
  70.   begin
  71.     ravenstvoBC_AD := True;
  72.   end
  73.   else
  74.     ravenstvoBC_AD := False;
  75.   if AB = BC then                 //проверка равенства сторон AB и BC
  76.   begin
  77.     ravenstvoAB_BC := True;
  78.   end
  79.   else
  80.     ravenstvoAB_BC := False;
  81.  
  82.   if tgAB = tgCD then               //проверка параллельности сторон AB и CD путём равенство углов, через равенство тангенсов
  83.   begin
  84.     prAB_CD := True;
  85.   end
  86.   else
  87.     prAB_CD := False;
  88.   if tgBC = tgAD then               //проверка параллельности сторон BC и AD путём равенство углов, через равенство тангенсов
  89.   begin
  90.     prBC_AD := True;
  91.   end
  92.   else
  93.     prBC_AD := False;
  94.  
  95.   if (prAB_CD = True) and (prBC_AD = True) and (ravenstvoAB_CD = True) and    //проверка на параллелограмм через равенство и параллельность противоположных сторон, когда углы не 90 градусов
  96.     (ravenstvoBC_AD = True) and (ugol_90grad = False) then
  97.   begin
  98.     figura := 'Параллелограмм';
  99.     Writeln('Вид: ', figura, '  AB = ', AB: 1: 3, '  BC = ', BC: 1: 3,
  100.       '  CD = ', CD: 1: 3, '  AD = ', AD: 1: 3);
  101.   end
  102.   else if (ravenstvoAB_BC = True) and (prAB_CD = True) and (prBC_AD = True) and          //проверка на квадрат путём равенства и параллельности всех сторон, когда углы 90 градусов
  103.     (ravenstvoAB_CD = True) and (ravenstvoBC_AD = True) and (ugol_90grad = True) then
  104.   begin
  105.     figura := 'Квадрат';
  106.     Writeln('Вид: ', figura, '  AB = ', AB: 1: 3, '  BC = ', BC: 1: 3,
  107.       '  CD = ', CD: 1: 3, '  AD = ', AD: 1: 3);
  108.   end
  109.   else if (ravenstvoAB_BC = False) and (prAB_CD = True) and                             //проверка на прямоугольник путём равенства и параллельности только противоположных сторон, когда угол 90 градусов
  110.     (prBC_AD = True) and (ravenstvoAB_CD = True) and (ravenstvoBC_AD = True) and
  111.     (ugol_90grad = True) then
  112.   begin
  113.     figura := 'Прямоугольник';
  114.     Writeln('Вид: ', figura, '  AB = ', AB: 1: 3, '  BC = ', BC: 1: 3,
  115.       '  CD = ', CD: 1: 3, '  AD = ', AD: 1: 3);
  116.   end
  117.   else if (prAB_CD = True) and (prBC_AD = False) and (ravenstvoAB_CD = False) then      //проверка на трапецию (1 вариант) через неравенство оснований, параллельности оснований и не параллельности боковых сторон
  118.   begin
  119.     figura := 'Трапеция';
  120.     Writeln('Вид: ', figura, '  AB = ', AB: 1: 3, '  BC = ', BC: 1: 3,
  121.       '  CD = ', CD: 1: 3, '  AD = ', AD: 1: 3);
  122.   end
  123.   else if (prAB_CD = False) and (prBC_AD = True) and (ravenstvoBC_AD = False) then      //проверка на трапецию (2 вариант) через неравенство оснований, параллельности оснований и не параллельности боковых сторон
  124.   begin
  125.     figura := 'Трапеция';
  126.     Writeln('Вид: ', figura, '  AB = ', AB: 1: 3, '  BC = ', BC: 1: 3,
  127.       '  CD = ', CD: 1: 3, '  AD = ', AD: 1: 3);
  128.   end
  129.   else                                         //если ни один из предыдущих вариантов не подходит, то это четырёхугольник другого вида
  130.     figura := 'Четырёхугольник другого вида';
  131. readln();
  132. end.
  133.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement