Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program laba2_1;
- //uses
- // System.SysUtils;
- Type
- TArray = array of integer;
- procedure Print(Flag, FlagInput: Boolean); forward;
- procedure CheckPolygon(X, Y: Tarray; N: Integer); forward;
- function CheckInput(Min, Max: Integer): Integer; forward;
- procedure UserInputArray(N: Integer); forward;
- procedure UserInput(); forward;
- procedure Print(Flag, FlagInput: Boolean);
- begin
- if not FlagInput then
- UserInput
- else
- begin
- if Flag then
- Writeln('Введённый многоугольник не выпуклый')
- else
- Writeln('Введённый многоугольник выпуклый');
- Writeln('Нажмите Enter для выхода из программы');
- Readln;
- end;
- end;
- procedure CheckPolygon(X, Y: Tarray; N: Integer);
- var
- i, j, k, Ans: Integer;
- Flag: Boolean;
- begin
- i := 0;
- repeat
- Inc(i);
- j := (i + 1) mod n;
- k := (i + 2) mod n;
- Ans := (X[j] - X[i]) * (Y[k] - Y[j]) - (Y[j] - Y[i]) * (X[k] - X[j]);
- if Ans < 0 then
- Flag := True;
- until (Flag) or (i = n);
- Print(Flag, True);
- end;
- function CheckInput(Min, Max: Integer): Integer;
- var
- IsValid: Boolean;
- CurrentValue: Integer;
- begin
- repeat
- IsValid := True;
- try
- Read(CurrentValue);
- except
- begin
- IsValid := False;
- Writeln('Введите целое число');
- end;
- end;
- if IsValid then
- if (CurrentValue < Min) or (CurrentValue > Max) then
- begin
- IsValid := False;
- Writeln('Введите число в заданном диапазоне');
- end;
- until IsValid;
- CheckInput := CurrentValue;
- end;
- procedure UserInputArray(N: Integer);
- var
- i: Integer;
- X, Y: Tarray;
- const MIN_VALUE = -500;
- const MAX_VALUE = 500;
- begin
- SetLength(X, N);
- SetLength(Y, N);
- Dec(N);
- Writeln('Введите координаты вершин в диапазоне ', MIN_VALUE, '..', MAX_VALUE, ' через Enter');
- for i := 0 to N do
- begin
- Write('Введите координаты ', i + 1, '-й вершины: ');
- X[i] := CheckInput(MIN_VALUE, MAX_VALUE);
- Y[i] := CheckInput(MIN_VALUE, MAX_VALUE);
- end;
- CheckPolygon(X, Y, N);
- end;
- procedure UserInput();
- var
- N: Integer;
- const MIN_SIZE = 3;
- const MAX_SIZE = 20;
- begin
- Writeln('Данная программа определяет, является ли данный многоугольник выпуклым');
- Write('Введите кол-во вершин в диапазоне ', MIN_SIZE, '..', MAX_SIZE, ': ');
- N := CheckInput(MIN_SIZE, MAX_SIZE);
- UserInputArray(N);
- end;
- begin
- Print(False, False);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement