Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program Lab_2_1;
- {$APPTYPE CONSOLE}
- {$R *.res}
- Uses
- System.SysUtils;
- Const
- MAX_VERTEX_NUMBER = 20;
- MIN_VERTEX_NUMBER = 3;
- MAX_COORDINATE = 100;
- MIN_COORDINATE = -100;
- Var
- VertexNumber, I: Integer;
- PolygonSide, MinPolygonSide: Real;
- ArrOfX, ArrOfY: Array Of Integer;
- IsCorrect: Boolean;
- Begin
- Writeln ('Данная программа находит длину саммой короткой стороны многоугольника с заданными координатами вершин');
- Writeln ('Диапазон количества вершин многоугольника: от ', MIN_VERTEX_NUMBER, ' до ', MAX_VERTEX_NUMBER);
- Repeat
- IsCorrect := True;
- Writeln ('Введите количество вершин многоугольника');
- Try
- Readln (VertexNumber);
- Except
- Writeln ('Введены некорректные данные');
- IsCorrect := False;
- End;
- If (IsCorrect) And ((VertexNumber < MIN_VERTEX_NUMBER) Or (VertexNumber > MAX_VERTEX_NUMBER)) Then
- Begin
- Writeln ('Введено число неверного диапазона');
- IsCorrect := False;
- End;
- Until (IsCorrect);
- SetLength (ArrOfX, VertexNumber);
- SetLength (ArrOfY, VertexNumber);
- Writeln ('Далее необходимо ввести координаты вершин многоугольника');
- Writeln ('Диапазон вводимых значений: от ', MIN_COORDINATE, ' до ', MAX_COORDINATE);
- I := 0;
- While (I < VertexNumber) Do
- Begin
- Repeat
- IsCorrect := True;
- Writeln ('Введите X-координату ', i + 1, ' вершины многоугольника');
- Try
- Readln(ArrOfX[I]);
- Except
- Writeln ('Введены некорректные данные');
- IsCorrect := False;
- End;
- If (IsCorrect) And ((ArrOfX[I] < MIN_COORDINATE) Or (ArrOfX[I] > MAX_COORDINATE)) Then
- Begin
- Writeln ('Введено число неверного диапазона');
- IsCorrect := False;
- End;
- Until (IsCorrect);
- Repeat
- IsCorrect := True;
- Writeln ('Введите Y-координату ', i + 1, ' вершины многоугольника');
- Try
- Readln (ArrOfY[I]);
- Except
- Writeln ('Введены некорректные данные');
- IsCorrect := False;
- End;
- If (IsCorrect) And ((ArrOfY[I] < MIN_COORDINATE) Or (ArrOfY[I] > MAX_COORDINATE)) Then
- Begin
- Writeln ('Введено число неверного диапазона');
- IsCorrect := False;
- End;
- Until (IsCorrect);
- Inc (I);
- End;
- Dec (VertexNumber);
- MinPolygonSide := Sqrt(2 * Sqr(MAX_COORDINATE - MIN_COORDINATE));
- For I := 0 To VertexNumber Do
- Begin
- If I <> VertexNumber Then
- PolygonSide := Sqrt(Sqr(abs(arrOfX[i + 1] - arrOfX[i])) + Sqr(abs(arrOfY[i + 1] - arrOfY[i])))
- Else
- PolygonSide := Sqrt(Sqr(abs(arrOfX[0] - arrOfX[i])) + Sqr(abs(arrOfY[0] - arrOfY[i])));
- If (PolygonSide < MinPolygonSide) Then
- MinPolygonSide := PolygonSide;
- End;
- Writeln ('Длина самой короткой стороны - ', minPolygonSide:3:1);
- Readln;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement