Advertisement
MadCortez

Untitled

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