Advertisement
ksyshshot

Lab_2.1

Oct 3rd, 2022 (edited)
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.62 KB | Source Code | 0 0
  1. Program Lab_2_1;
  2.  
  3. {$APPTYPE CONSOLE}
  4. {$R *.res}
  5.  
  6. Uses
  7.     System.SysUtils;
  8.  
  9. Const
  10.     MAX_VERTEX_NUMBER = 20;
  11.     MIN_VERTEX_NUMBER = 3;
  12.     MAX_COORDINATE = 100;
  13.     MIN_COORDINATE = -100;
  14. Var
  15.     VertexNumber, I: Integer;
  16.     PolygonSide, MinPolygonSide: Real;
  17.     ArrOfX, ArrOfY: Array Of Integer;
  18.     IsCorrect: Boolean;
  19. Begin
  20.     Writeln ('Данная программа находит длину саммой короткой стороны многоугольника с заданными координатами вершин');
  21.     Writeln ('Диапазон количества вершин многоугольника: от ', MIN_VERTEX_NUMBER, ' до ', MAX_VERTEX_NUMBER);
  22.     Repeat
  23.         IsCorrect := True;
  24.         Writeln ('Введите количество вершин многоугольника');
  25.         Try
  26.             Readln (VertexNumber);
  27.         Except
  28.             Writeln ('Введены некорректные данные');
  29.             IsCorrect := False;
  30.         End;
  31.         If ((IsCorrect) And ((VertexNumber < MIN_VERTEX_NUMBER) Or (VertexNumber > MAX_VERTEX_NUMBER))) Then
  32.         Begin
  33.             Writeln ('Введено  число неверного диапазона');
  34.             IsCorrect := False;
  35.         End;
  36.     Until (IsCorrect);
  37.     SetLength (ArrOfX, VertexNumber);
  38.     SetLength (ArrOfY, VertexNumber);
  39.     Writeln ('Далее необходимо ввести координаты вершин многоугольника');
  40.     Writeln ('Диапазон вводимых значений: от ', MIN_COORDINATE, ' до ', MAX_COORDINATE);
  41.     I := 0;
  42.     While (I < VertexNumber) Do
  43.     Begin
  44.         Repeat
  45.             IsCorrect := True;
  46.             Writeln ('Введите X-координату ', I + 1, ' вершины многоугольника');
  47.             Try
  48.                 Readln(ArrOfX[I]);
  49.             Except
  50.                 Writeln ('Введены некорректные данные');
  51.                 IsCorrect := False;
  52.             End;
  53.             If ((IsCorrect) And ((ArrOfX[I] < MIN_COORDINATE) Or (ArrOfX[I] > MAX_COORDINATE))) Then
  54.             Begin
  55.                 Writeln ('Введено  число неверного диапазона');
  56.                 IsCorrect := False;
  57.             End;
  58.         Until (IsCorrect);
  59.         Repeat
  60.             IsCorrect := True;
  61.             Writeln ('Введите Y-координату ', I + 1, ' вершины многоугольника');
  62.             Try
  63.                 Readln (ArrOfY[I]);
  64.             Except
  65.                 Writeln ('Введены некорректные данные');
  66.                 IsCorrect := False;
  67.             End;
  68.             If ((IsCorrect) And ((ArrOfY[I] < MIN_COORDINATE) Or (ArrOfY[I] > MAX_COORDINATE))) Then
  69.             Begin
  70.                 Writeln ('Введено  число неверного диапазона');
  71.                 IsCorrect := False;
  72.             End;
  73.         Until (IsCorrect);
  74.         Inc (I);
  75.     End;
  76.     Dec (VertexNumber);
  77.     MinPolygonSide := Sqrt(2 * Sqr(MAX_COORDINATE - MIN_COORDINATE));
  78.     For I := 0 To VertexNumber Do
  79.     Begin
  80.         If (I <> VertexNumber) Then
  81.             PolygonSide := Sqrt(Sqr(Abs(ArrOfX[I + 1] - ArrOfX[I])) + Sqr(abs(arrOfY[I + 1] - ArrOfY[I])))
  82.         Else
  83.             PolygonSide := Sqrt(Sqr(Abs(arrOfX[0] - ArrOfX[I])) + Sqr(Abs(ArrOfY[0] - ArrOfY[I])));
  84.         If (PolygonSide < MinPolygonSide) Then
  85.             MinPolygonSide := PolygonSide;
  86.     End;
  87.     Writeln ('Длина самой короткой стороны - ', MinPolygonSide:3:1);
  88.     Readln;
  89. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement