Not a member of Pastebin yet?
                        Sign Up,
                        it unlocks many cool features!                    
                - Program Laba_2_1;
 - {$APPTYPE CONSOLE}
 - Uses
 - System.SysUtils;
 - Const
 - MIN_VALUE_CORD = -100;
 - MAX_VALUE_CORD = 100;
 - MIN_VALUE_ANGLES = 3;
 - MAX_VALUE_ANGLES = 15;
 - Var
 - FlagIsIncorrect, I: Integer;
 - NumberOfAngles, NumberOfCoordinates, ArrayNumberOfAngles, MinNumberOfAngles: Integer;
 - VectorProduct, VectorCordX1, VectorCordX2, VectorCordY1, VectorCordY2: Integer;
 - IsCorrect: Boolean;
 - ArrayOfPoints: Array of Array of Integer;
 - Begin
 - Writeln('Данная программа определяет, является ли многоугольник с заданными вершинами
 - выпуклым или нет.');
 - Writeln('Диапазон ввода количества углов многоугольника: ', MIN_VALUE_ANGLES, '...',
 - MAX_VALUE_ANGLES, '.');
 - Writeln('Диапазон ввода значений координат по OX и OY: ', MIN_VALUE_CORD, '...',
 - MAX_VALUE_CORD, '.');
 - Repeat
 - IsCorrect := True;
 - Write('Введите значение количества углов многоугольника: ');
 - Try
 - Readln(NumberOfAngles);
 - Except
 - Writeln('Проверьте корректность ввода данных!');
 - IsCorrect := False;
 - End;
 - If (IsCorrect) And ((NumberOfAngles < MIN_VALUE_ANGLES) Or (NumberOfAngles >
 - MAX_VALUE_ANGLES)) Then
 - Begin
 - Writeln ('Введите значение от ', MIN_VALUE_ANGLES, ' до ', MAX_VALUE_ANGLES, '!');
 - IsCorrect := False;
 - End;
 - Until IsCorrect;
 - NumberOfCoordinates := 2;
 - ArrayNumberOfAngles := NumberOfAngles - 1;
 - FlagIsIncorrect := 0;
 - SetLength (ArrayOfPoints, NumberOfAngles, NumberOfCoordinates);
 - For I := 0 To ArrayNumberOfAngles Do
 - Begin
 - Writeln('Введите значение точки ', I + 1, ':');
 - Repeat
 - IsCorrect := True;
 - Write('Введите значение координаты по оси ОХ: ');
 - Try
 - Readln(ArrayOfPoints[I, 0]);
 - Except
 - Writeln('Проверьте корректность ввода данных!');
 - IsCorrect := False;
 - End;
 - If (IsCorrect) And ((ArrayOfPoints[I, 0] < MIN_VALUE_CORD) Or (ArrayOfPoints[I, 0] >
 - MAX_VALUE_CORD)) Then
 - Begin
 - Writeln ('Введите значение от ', MIN_VALUE_CORD, ' до ', MAX_VALUE_CORD, '!');
 - IsCorrect := False;
 - End;
 - Until IsCorrect;
 - Repeat
 - IsCorrect := True;
 - Write('Введите значение координаты по оси ОY: ');
 - Try
 - Readln(ArrayOfPoints[I, 1]);
 - Except
 - Writeln('Проверьте корректность ввода данных!');
 - IsCorrect := False;
 - End;
 - If (IsCorrect) And ((ArrayOfPoints[I, 1] < MIN_VALUE_CORD) Or (ArrayOfPoints[I, 1] >
 - MAX_VALUE_CORD)) Then
 - Begin
 - Writeln ('Введите значение от ', MIN_VALUE_CORD, ' до ', MAX_VALUE_CORD, '!');
 - IsCorrect := False;
 - End;
 - Until IsCorrect;
 - End;
 - MinNumberOfAngles := NumberOfAngles - 3;
 - For I := 0 To MinNumberOfAngles Do
 - Begin
 - VectorCordX1 := ArrayOfPoints [I + 1, 0] - ArrayOfPoints [I, 0];
 - VectorCordY1 := ArrayOfPoints [I + 1, 1] - ArrayOfPoints [I, 1];
 - VectorCordX2 := ArrayOfPoints [I + 2, 0] - ArrayOfPoints [I + 1, 0];
 - VectorCordY2 := ArrayOfPoints [I + 2, 1] - ArrayOfPoints [I + 1, 1];
 - VectorProduct := VectorCordX1 * VectorCordY2 - VectorCordX2 * VectorCordY1;
 - If VectorProduct < 0 Then Inc(FlagIsIncorrect);
 - End;
 - VectorCordX1 := ArrayOfPoints [ArrayNumberOfAngles, 0] -
 - ArrayOfPoints [ArrayNumberOfAngles - 1, 0];
 - VectorCordY1 := ArrayOfPoints [ArrayNumberOfAngles, 1] -
 - ArrayOfPoints [ArrayNumberOfAngles - 1, 1];
 - VectorCordX2 := ArrayOfPoints [0, 0] - ArrayOfPoints [ArrayNumberOfAngles, 0];
 - VectorCordY2 := ArrayOfPoints [0, 1] - ArrayOfPoints [ArrayNumberOfAngles, 1];
 - VectorProduct := VectorCordX1 * VectorCordY2 - VectorCordX2 * VectorCordY1;
 - If VectorProduct < 0 Then Inc(FlagIsIncorrect);
 - If FlagIsIncorrect > 0 Then Writeln('Многоугольник не является выпуклым.')
 - Else Writeln('Многоугольник является выпуклым.');
 - Readln;
 - End.
 
Advertisement
 
                    Add Comment                
                
                        Please, Sign In to add comment