Advertisement
MadCortez

Untitled

Oct 2nd, 2020
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.11 KB | None | 0 0
  1. program laba2_1;
  2. uses
  3.    System.SysUtils;
  4. var
  5.    N, i: Integer;
  6.    X, Y: array of Integer;
  7.    const MIN_SIZE = 2;
  8.    const MAX_SIZE = 21;
  9.    const MIN_VALUE = -501;
  10.    const MAX_VALUE = 501;
  11.    
  12.    function GetInput(Min, Max: Integer): Integer;
  13.    var
  14.       IsValid: Boolean;
  15.       CurrentValue: Integer;
  16.    begin
  17.       IsValid := False;
  18.       repeat
  19.       try
  20.          Read(CurrentValue);
  21.          if (CurrentValue > Min) and (CurrentValue < Max) then
  22.             IsValid := True
  23.          else
  24.             Writeln('Введите число в заданном диапазоне');
  25.       except
  26.          Writeln('Введите целое число');
  27.       end;
  28.    until IsValid;
  29.    GetInput := CurrentValue;
  30.    end;
  31.    
  32.    function CheckPolygon(): Boolean;
  33.    var
  34.       i, j, k, Ans: Integer;
  35.    begin
  36.       for i := 0 to N do
  37.       begin
  38.          j := (i + 1) mod n;
  39.          k := (i + 2) mod n;
  40.          Ans := (X[j] - X[i]) * (Y[k] - Y[j]);
  41.          Ans := Ans - (Y[j] - Y[i]) * (X[k] - X[j]);
  42.          if Ans < 0 then
  43.             CheckPolygon := True;
  44.       end;
  45.    end;
  46.    
  47. begin
  48.    Writeln('Данная программа определяет, является ли данный многоугольник выпуклым');
  49.    Write('Введите кол-во вершин в диапазоне ', MIN_SIZE + 1, '..', MAX_SIZE - 1, ': ');
  50.    N := GetInput(MIN_SIZE, MAX_SIZE);
  51.    Writeln('Введите координаты вершин в диапазоне ', MIN_VALUE + 1, '..', MAX_VALUE - 1, ' через Enter');
  52.    SetLength(X, N);
  53.    SetLength(Y, N);
  54.    Dec(N);
  55.    for i := 0 to N do
  56.    begin
  57.       Write('Введите координаты ', i + 1, '-й вершины: ');
  58.       X[i] := GetInput(MIN_VALUE, MAX_VALUE);
  59.       Y[i] := GetInput(MIN_VALUE, MAX_VALUE);
  60.    end;
  61.    if CheckPolygon then
  62.       Writeln('Введённый многоугольник не выпуклый')
  63.    else
  64.       Writeln('Введённый многоугольник выпуклый');
  65.    Writeln('Нажмите Enter для выхода из программы');
  66.    Readln;
  67. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement