Advertisement
MadCortez

Untitled

Oct 2nd, 2020
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.10 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.    IsValid, Flag: Boolean;
  8.    const MIN_SIZE = 2;
  9.    const MAX_SIZE = 21;
  10.    const MIN_VALUE = -501;
  11.    const MAX_VALUE = 501;
  12.    function GetInput(Min, Max: Integer): Integer;
  13.    var
  14.       IsValid: Boolean;
  15.       Now: Integer;
  16.    begin
  17.       IsValid := False;
  18.       repeat
  19.       try
  20.          Read(Now);
  21.          if (Now > Min) and (Now < Max) then
  22.             IsValid := True
  23.          else
  24.             Writeln('Введите число в заданном диапазоне');
  25.       except
  26.          Writeln('Введите целое число');
  27.       end;
  28.    until IsValid;
  29.    GetInput := Now;
  30.    end;
  31.    function CheckPolygon(): Boolean;
  32.    var
  33.       Flag: Boolean;
  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. begin
  47.    Writeln('Данная программа определяет, является ли данный многоугольник выпуклым');
  48.    Write('Введите кол-во вершин в диапазоне ', MIN_SIZE + 1, '..', MAX_SIZE - 1, ': ');
  49.    N := GetInput(MIN_SIZE, MAX_SIZE);
  50.    Writeln('Введите координаты вершин в диапазоне ', MIN_VALUE + 1, '..', MAX_VALUE - 1, ' через Enter');
  51.    SetLength(X, N);
  52.    SetLength(Y, N);
  53.    Dec(N);
  54.    for i := 0 to N do
  55.    begin
  56.       Write('Введите координаты ', i + 1, '-й вершины: ');
  57.       X[i] := GetInput(MIN_VALUE, MAX_VALUE);
  58.       Y[i] := GetInput(MIN_VALUE, MAX_VALUE);
  59.    end;
  60.    if CheckPolygon then
  61.       Writeln('Введённый многоугольник не выпуклый')
  62.    else
  63.       Writeln('Введённый многоугольник выпуклый');
  64.    Writeln('Нажмите Enter для выхода из программы');
  65.    Readln;
  66. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement