Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- import static java.lang.Math.*;
- public class Main {
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- final int MAX_VERTEX_NUMBER = 20;
- final int MIN_VERTEX_NUMBER = 3;
- System.out.println("Данная программа находит длину саммой короткой стороны многоугольника с заданными координатами вершин");
- System.out.println("Диапазон количества вершин многоугольника: от " + MIN_VERTEX_NUMBER + " до " + MAX_VERTEX_NUMBER);
- int vertexNumber = 0;
- boolean isIncorrect;
- do {
- isIncorrect = false;
- System.out.println("Введите количество вершин многоугольника");
- try {
- vertexNumber = Integer.parseInt(scan.nextLine());
- } catch (Exception e) {
- isIncorrect = true;
- System.out.println("Введены некорректные данные");
- }
- if ((!isIncorrect) && ((vertexNumber < MIN_VERTEX_NUMBER) || (vertexNumber > MAX_VERTEX_NUMBER))) {
- System.out.println("Введено число неверного диапазона");
- isIncorrect = true;
- }
- } while (isIncorrect);
- int[] arrOfX = new int[vertexNumber];
- int[] arrOfY = new int[vertexNumber];
- final int MAX_COORDINATE = 100;
- final int MIN_COORDINATE = -100;
- int i = 0;
- System.out.println("Далее необходимо ввести координаты вершин многоугольника");
- System.out.println("Диапазон вводимых значений: от " + MIN_COORDINATE + " до " + MAX_COORDINATE);
- while (i < vertexNumber) {
- do {
- isIncorrect = false;
- System.out.println("Введите X-координату " + (i + 1) + " вершины многоугольника");
- try {
- arrOfX[i] = Integer.parseInt(scan.nextLine());
- } catch (Exception e) {
- isIncorrect = true;
- System.out.println("Введены некорректные данные");
- }
- if ((!isIncorrect) && ((arrOfX[i] < MIN_COORDINATE) || (arrOfX[i] > MAX_COORDINATE))) {
- System.out.println("Введено число неверного диапазона");
- isIncorrect = true;
- }
- } while (isIncorrect);
- do {
- isIncorrect = false;
- System.out.println("Введите Y-координату " + (i + 1) + " вершины многоугольника");
- try {
- arrOfY[i] = Integer.parseInt(scan.nextLine());
- } catch (Exception e) {
- isIncorrect = true;
- System.out.println("Введены некорректные данные");
- }
- if ((!isIncorrect) && ((arrOfY[i] < MIN_COORDINATE) || (arrOfY[i] > MAX_COORDINATE))) {
- System.out.println("Введено число неверного диапазона");
- isIncorrect = true;
- }
- } while (isIncorrect);
- i++;
- }
- scan.close();
- double polygonSide;
- double minPolygonSide = sqrt(2 * pow(MAX_COORDINATE - MIN_COORDINATE,2));
- vertexNumber--;
- for (i = 0; i < vertexNumber + 1; i++) {
- if (i != vertexNumber)
- polygonSide = sqrt(pow(abs(arrOfX[i + 1] - arrOfX[i]),2) + pow(abs(arrOfY[i + 1] - arrOfY[i]),2));
- else
- polygonSide = sqrt(pow(abs(arrOfX[0] - arrOfX[i]), 2) + pow(abs(arrOfY[0] - arrOfY[i]), 2));
- if (polygonSide < minPolygonSide)
- minPolygonSide = polygonSide;
- }
- System.out.println("Длина самой короткой стороны - " + minPolygonSide);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement