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