Advertisement
anticlown

Laba.2.1(Java)

Dec 22nd, 2022
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.89 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Main {
  4.   public static void main (String[] args){
  5.     Scanner scan = new Scanner(System.in);
  6.  
  7.     int numberOfAngles = 0,numberOfCoordinates = 2,flagIsIncorrect = 0;
  8.     int vectorProduct, vectorCordX1, vectorCordX2, vectorCordY1, vectorCordY2;
  9.     boolean isIncorrect;
  10.     final int MIN_VALUE_CORD = -100;
  11.     final int MAX_VALUE_CORD = 100;
  12.     final int MIN_VALUE_ANGLES = 3;
  13.     final int MAX_VALUE_ANGLES = 15;
  14.  
  15.     System.out.println("Данная программа определяет,является ли многоугольник с заданными
  16.                        вершинами выпуклым или нет." + "\n" +
  17.                        "Диапазон ввода количества углов многоугольника: " + MIN_VALUE_ANGLES +
  18.                        "..." + MAX_VALUE_ANGLES + "." + "\n" +
  19.                        "Диапазон ввода значений координат по OX и OY: " + MIN_VALUE_CORD +
  20.                        "..." + MAX_VALUE_CORD + ".");
  21.  
  22.     do{
  23.       System.out.println("Введите значение количества углов многоугольника: ");
  24.       isIncorrect = false;
  25.       try{
  26.         numberOfAngles = Integer.parseInt(scan.nextLine());
  27.       }catch(NumberFormatException e){
  28.         System.out.println("Проверьте корректность ввода данных!");
  29.         isIncorrect = true;
  30.       }
  31.       if (!isIncorrect && ((numberOfAngles < MIN_VALUE_ANGLES) || (numberOfAngles >
  32.            MAX_VALUE_ANGLES))){
  33.         System.out.println("Введите значение от " + MIN_VALUE_ANGLES + " до " +
  34.            MAX_VALUE_ANGLES + "!");
  35.         isIncorrect = true;
  36.       }
  37.     }while(isIncorrect);
  38.  
  39.     int arrayOfPoints[][] = new int [numberOfAngles][];
  40.  
  41.     for (int i = 0; i < numberOfAngles; i++)
  42.     {
  43.       arrayOfPoints[i] = new int[numberOfCoordinates];
  44.     }
  45.     for (int i = 0; i < numberOfAngles; i++)
  46.     {
  47.       System.out.println("Ввод координат точки " + (i + 1) + ":");
  48.  
  49.       do{
  50.         System.out.println("Введите значение координаты по оси ОХ: ");
  51.         isIncorrect = false;
  52.         try{
  53.           arrayOfPoints[i][0] = Integer.parseInt(scan.nextLine());
  54.         }catch(NumberFormatException e){
  55.           System.out.println("Проверьте корректность ввода данных!");
  56.           isIncorrect = true;
  57.         }
  58.         if (!isIncorrect && ((arrayOfPoints[i][0] < MIN_VALUE_CORD) || (arrayOfPoints[i][0] >
  59.              MAX_VALUE_CORD))){
  60.           System.out.println("Введите значение от " + MIN_VALUE_CORD + " до " + MAX_VALUE_CORD
  61.                              + "!");
  62.           isIncorrect = true;
  63.         }
  64.       }while(isIncorrect);
  65.  
  66.       do{
  67.         System.out.println("Введите значение координаты по оси ОY: ");
  68.         isIncorrect = false;
  69.         try{
  70.           arrayOfPoints[i][1] = Integer.parseInt(scan.nextLine());
  71.         }catch(NumberFormatException e){
  72.           System.out.println("Проверьте корректность ввода данных!");
  73.           isIncorrect = true;
  74.         }
  75.         if (!isIncorrect && ((arrayOfPoints[i][1] < MIN_VALUE_CORD) || (arrayOfPoints[i][1] >
  76.              MAX_VALUE_CORD))){
  77.           System.out.println("Введите значение от " + MIN_VALUE_CORD + " до " + MAX_VALUE_CORD
  78.                              + "!");
  79.           isIncorrect = true;
  80.         }
  81.       }while(isIncorrect);
  82.     }
  83.  
  84.     scan.close();
  85.     int minNumberOfAngles = numberOfAngles - 2;
  86.  
  87.     for (int i = 0; i < minNumberOfAngles; i++)
  88.     {
  89.       vectorCordX1 = arrayOfPoints[i + 1][0] - arrayOfPoints[i][0];
  90.       vectorCordY1 = arrayOfPoints[i + 1][1] - arrayOfPoints[i][1];
  91.       vectorCordX2 = arrayOfPoints[i + 2][0] - arrayOfPoints[i + 1][0];
  92.       vectorCordY2 = arrayOfPoints[i + 2][1] - arrayOfPoints[i + 1][1];
  93.       vectorProduct = vectorCordX1 * vectorCordY2 - vectorCordX2 * vectorCordY1;
  94.       if (vectorProduct < 0)
  95.       {
  96.         flagIsIncorrect += 1;
  97.       }
  98.     }
  99.  
  100.     vectorCordX1 = arrayOfPoints[numberOfAngles - 1][0] - arrayOfPoints[numberOfAngles - 2][0];
  101.     vectorCordY1 = arrayOfPoints[numberOfAngles - 1][1] - arrayOfPoints[numberOfAngles - 2][1];
  102.     vectorCordX2 = arrayOfPoints[0][0] - arrayOfPoints[numberOfAngles - 1][0];
  103.     vectorCordY2 = arrayOfPoints[0][1] - arrayOfPoints[numberOfAngles - 1][1];
  104.     vectorProduct = vectorCordX1 * vectorCordY2 - vectorCordX2 * vectorCordY1;
  105.     if (vectorProduct < 0)
  106.     {
  107.       flagIsIncorrect += 1;
  108.     }
  109.  
  110.     if (flagIsIncorrect > 0)
  111.     {
  112.       System.out.println("Многоугольник не является выпуклым.");
  113.     }
  114.     else System.out.println("Многоугольник является выпуклым.");
  115.   }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement