Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program laba_po_infe;
- //Пользователь вводит координаты точек, которые образуют четырёхугольник
- //Координаты точек: A(x1, y1), B(x2, y2), C(x3, y3), D(x4, y4)
- var
- x1, y1 : longint; //координаты точки A
- x2, y2 : longint; //координаты точки B
- x3, y3 : longint; //координаты точки C
- x4, y4 : longint; //координаты точки D
- tgAB, tgBC, tgCD, tgAD: double; //Тангенсы углов пересечения сторон AB, BC, CD, AD соответственно с осью Х
- prAB_CD, prBC_AD: boolean; //проверка параллельности сторон
- AB, BC, CD, AD: double; //длины сторон, образующих четырёхугольник
- ravenstvoAB_CD: boolean; //проверка равенства AB и CD
- ravenstvoBC_AD : boolean; //проверка равенства BC и AD
- ravenstvoAB_BC: boolean; //проверка равенства AB и BC
- figura: string; //проверка вида четырёхугольника
- ugol_90grad: boolean; //проверка равенства угла 90ам градусам
- begin
- Write('Координаты точки A:'); //ввод координат точки A
- readln(x1, y1);
- Write('Координаты точки B:'); //ввод координат точки B
- readln(x2, y2);
- Write('Координаты точки C:'); //ввод координат точки C
- readln(x3, y3);
- Write('Координаты точки D:'); //ввод координат точки D
- readln(x4, y4);
- AB := sqrt(sqr(x2 - x1) + sqr(y2 - y1)); //вычисление длины стороны AB
- BC := sqrt(sqr(x3 - x2) + sqr(y3 - y2)); //вычисление длины стороны BC
- CD := sqrt(sqr(x4 - x3) + sqr(y4 - y3)); //вычисление длины стороны CD
- AD := sqrt(sqr(x1 - x4) + sqr(y1 - y4)); //вычисление длины стороны AD
- if ((x2 - x1) / 2) * ((x3 - x2) / 2) + ((y2 - y1) / 2) * ((y3 - y2) / 2) = 0 then //проверка угла 90 градусов через скалярное произведние векторов
- begin
- ugol_90grad := True;
- end
- else
- ugol_90grad := False;
- if (x2 <> x1) and (x2 <> x3) and (x3 <> x4) and (x4 <> x1) then //счёт тангенсов углов, если знаменатели не равны 0
- begin
- tgAB := (y2 - y1) / (x2 - x1);
- tgBC := (y3 - y2) / (x3 - x2);
- tgCD := (y4 - y3) / (x4 - x3);
- tgAD := (y1 - y4) / (x1 - x4);
- end
- else
- if (x2 = x1) and (x3 = x4) then //проверка параллельности, если тангенс не существует
- begin
- prAB_CD := True;
- end
- else
- prAB_CD := False;
- if (x2 = x3) and (x4 = x1) then //проверка параллельности, если тангенс не существует
- begin
- prBC_AD := True;
- end
- else
- prBC_AD := False;
- readln;
- if AB = CD then //проверка равенства сторон AB и CD
- begin
- ravenstvoAB_CD := True;
- end
- else
- ravenstvoAB_CD := False;
- if BC = AD then //проверка равенства сторон BC и AD
- begin
- ravenstvoBC_AD := True;
- end
- else
- ravenstvoBC_AD := False;
- if AB = BC then //проверка равенства сторон AB и BC
- begin
- ravenstvoAB_BC := True;
- end
- else
- ravenstvoAB_BC := False;
- if tgAB = tgCD then //проверка параллельности сторон AB и CD путём равенство углов, через равенство тангенсов
- begin
- prAB_CD := True;
- end
- else
- prAB_CD := False;
- if tgBC = tgAD then //проверка параллельности сторон BC и AD путём равенство углов, через равенство тангенсов
- begin
- prBC_AD := True;
- end
- else
- prBC_AD := False;
- if (prAB_CD = True) and (prBC_AD = True) and (ravenstvoAB_CD = True) and //проверка на параллелограмм через равенство и параллельность противоположных сторон, когда углы не 90 градусов
- (ravenstvoBC_AD = True) and (ugol_90grad = False) then
- begin
- figura := 'Параллелограмм';
- Writeln('Вид: ', figura, ' AB = ', AB: 1: 3, ' BC = ', BC: 1: 3,
- ' CD = ', CD: 1: 3, ' AD = ', AD: 1: 3);
- end
- else if (ravenstvoAB_BC = True) and (prAB_CD = True) and (prBC_AD = True) and //проверка на квадрат путём равенства и параллельности всех сторон, когда углы 90 градусов
- (ravenstvoAB_CD = True) and (ravenstvoBC_AD = True) and (ugol_90grad = True) then
- begin
- figura := 'Квадрат';
- Writeln('Вид: ', figura, ' AB = ', AB: 1: 3, ' BC = ', BC: 1: 3,
- ' CD = ', CD: 1: 3, ' AD = ', AD: 1: 3);
- end
- else if (ravenstvoAB_BC = False) and (prAB_CD = True) and //проверка на прямоугольник путём равенства и параллельности только противоположных сторон, когда угол 90 градусов
- (prBC_AD = True) and (ravenstvoAB_CD = True) and (ravenstvoBC_AD = True) and
- (ugol_90grad = True) then
- begin
- figura := 'Прямоугольник';
- Writeln('Вид: ', figura, ' AB = ', AB: 1: 3, ' BC = ', BC: 1: 3,
- ' CD = ', CD: 1: 3, ' AD = ', AD: 1: 3);
- end
- else if (prAB_CD = True) and (prBC_AD = False) and (ravenstvoAB_CD = False) then //проверка на трапецию (1 вариант) через неравенство оснований, параллельности оснований и не параллельности боковых сторон
- begin
- figura := 'Трапеция';
- Writeln('Вид: ', figura, ' AB = ', AB: 1: 3, ' BC = ', BC: 1: 3,
- ' CD = ', CD: 1: 3, ' AD = ', AD: 1: 3);
- end
- else if (prAB_CD = False) and (prBC_AD = True) and (ravenstvoBC_AD = False) then //проверка на трапецию (2 вариант) через неравенство оснований, параллельности оснований и не параллельности боковых сторон
- begin
- figura := 'Трапеция';
- Writeln('Вид: ', figura, ' AB = ', AB: 1: 3, ' BC = ', BC: 1: 3,
- ' CD = ', CD: 1: 3, ' AD = ', AD: 1: 3);
- end
- else //если ни один из предыдущих вариантов не подходит, то это четырёхугольник другого вида
- figura := 'Четырёхугольник другого вида';
- readln();
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement