Advertisement
ksyshshot

Untitled

Oct 3rd, 2022
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.16 KB | Source Code | 0 0
  1. import java.util.Scanner;
  2. import static java.lang.Math.*;
  3. public class Main {
  4.     public static void main(String[] args) {
  5.         Scanner scan = new Scanner(System.in);
  6.         final int MAX_VERTEX_NUMBER = 20;
  7.         final int MIN_VERTEX_NUMBER = 3;
  8.         System.out.println("Данная программа находит длину саммой короткой стороны многоугольника с заданными координатами вершин");
  9.         System.out.println("Диапазон количества вершин многоугольника: от " + MIN_VERTEX_NUMBER + " до " + MAX_VERTEX_NUMBER);
  10.         int vertexNumber = 0;
  11.         boolean isIncorrect;
  12.         do {
  13.             isIncorrect = false;
  14.             System.out.println("Введите количество вершин многоугольника");
  15.             try {
  16.                 vertexNumber = Integer.parseInt(scan.nextLine());
  17.             } catch (Exception e) {
  18.                 isIncorrect = true;
  19.                 System.out.println("Введены некорректные данные");
  20.             }
  21.             if ((!isIncorrect) && ((vertexNumber < MIN_VERTEX_NUMBER) || (vertexNumber > MAX_VERTEX_NUMBER))) {
  22.                 System.out.println("Введено  число неверного диапазона");
  23.                 isIncorrect = true;
  24.             }
  25.         } while (isIncorrect);
  26.  
  27.         int[] arrOfX = new int[vertexNumber];
  28.         int[] arrOfY = new int[vertexNumber];
  29.  
  30.         final int MAX_COORDINATE = 100;
  31.         final int MIN_COORDINATE = -100;
  32.         int i = 0;
  33.         System.out.println("Далее необходимо ввести координаты вершин многоугольника");
  34.         System.out.println("Диапазон вводимых значений: от " + MIN_COORDINATE + " до " + MAX_COORDINATE);
  35.         while (i < vertexNumber) {
  36.             do {
  37.                 isIncorrect = false;
  38.                 System.out.println("Введите X-координату " + (i + 1) + " вершины многоугольника");
  39.                 try {
  40.                     arrOfX[i] = Integer.parseInt(scan.nextLine());
  41.                 } catch (Exception e) {
  42.                     isIncorrect = true;
  43.                     System.out.println("Введены некорректные данные");
  44.                 }
  45.                 if ((!isIncorrect) && ((arrOfX[i] < MIN_COORDINATE) || (arrOfX[i] > MAX_COORDINATE))) {
  46.                     System.out.println("Введено  число неверного диапазона");
  47.                     isIncorrect = true;
  48.                 }
  49.             } while (isIncorrect);
  50.             do {
  51.                 isIncorrect = false;
  52.                 System.out.println("Введите Y-координату " + (i + 1) + " вершины многоугольника");
  53.                 try {
  54.                     arrOfY[i] = Integer.parseInt(scan.nextLine());
  55.                 } catch (Exception e) {
  56.                     isIncorrect = true;
  57.                     System.out.println("Введены некорректные данные");
  58.                 }
  59.                 if ((!isIncorrect) && ((arrOfY[i] < MIN_COORDINATE) || (arrOfY[i] > MAX_COORDINATE))) {
  60.                     System.out.println("Введено  число неверного диапазона");
  61.                     isIncorrect = true;
  62.                 }
  63.             } while (isIncorrect);
  64.             i++;
  65.         }
  66.         scan.close();
  67.         double polygonSide;
  68.         double minPolygonSide = sqrt(2 * pow(MAX_COORDINATE - MIN_COORDINATE,2));
  69.         for (i = 0; i < vertexNumber; i++) {
  70.             if (i == vertexNumber - 1)
  71.                 polygonSide = sqrt(pow(abs(arrOfX[0] - arrOfX[i]), 2) + pow(abs(arrOfY[0] - arrOfY[i]), 2));
  72.             else
  73.                 polygonSide = sqrt(pow(abs(arrOfX[i + 1] - arrOfX[i]),2) + pow(abs(arrOfY[i + 1] - arrOfY[i]),2));
  74.             if (polygonSide < minPolygonSide)
  75.                 minPolygonSide = polygonSide;
  76.         }
  77.         System.out.println("Длина самой короткой стороны - " + minPolygonSide);
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement