Advertisement
THOMAS_SHELBY_18

Lab2_1 (Java) without function and procedure

Oct 17th, 2023
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.30 KB | Source Code | 0 0
  1. package com.company;
  2. import java.util.Scanner;
  3.  
  4. public class Main {
  5.     public static void main(String[] args) {
  6.         final int MIN_N = 3, MAX_N = 100, MIN_COORDINATE = -100, MAX_COORDINATE = 100;
  7.         int n, i, x, y, min, max;
  8.         boolean isNotCorrect, areCoordinatesNotUnique, isPointOnPolygon, isPointOnLine, isPointBetweenXCoord, isPointBetweenYCoord ;
  9.  
  10.         n = 0;
  11.         x = 0;
  12.         y = 0;
  13.  
  14.         Scanner scan = new Scanner(System.in);
  15.         System.out.println("Данная программа определит, принадлежит ли точка с координатами X и Y многоугольнику");
  16.  
  17.         System.out.print("Введите количество вершин многоугольника N от " + MIN_N + " до " + MAX_N + ":");
  18.         do {
  19.             isNotCorrect = false;
  20.             try {
  21.                 n = Integer.parseInt(scan.nextLine());
  22.             }
  23.             catch (NumberFormatException e) {
  24.                 isNotCorrect = true;
  25.                 System.out.print("Некорректный ввод! Введите значение еще раз:");
  26.             }
  27.             if ((!isNotCorrect) && (n < MIN_N || n > MAX_N)) {
  28.                 isNotCorrect = true;
  29.                 System.out.print("Недопустимое значение! Введите значение еще раз:");
  30.             }
  31.         } while (isNotCorrect);
  32.  
  33.         int[] arrX = new int[n + 1];
  34.         int[] arrY = new int[n + 1];
  35.  
  36.         System.out.println("Введите координаты точки X и Y");
  37.         System.out.print("Целое значение координаты X от " + MIN_COORDINATE + " до " + MAX_COORDINATE + ":");
  38.         do {
  39.             isNotCorrect = false;
  40.             try {
  41.                 x = Integer.parseInt(scan.nextLine());
  42.             }
  43.             catch (NumberFormatException e) {
  44.                 isNotCorrect = true;
  45.                 System.out.print("Некорректный ввод! Введите значение еще раз:");
  46.             }
  47.             if ((!isNotCorrect) && (x < MIN_COORDINATE || x > MAX_COORDINATE)) {
  48.                 isNotCorrect = true;
  49.                 System.out.print("Недопустимое значение! Введите значение еще раз:");
  50.             }
  51.         } while (isNotCorrect);
  52.  
  53.         System.out.print("Целое значение координаты Y от " + MIN_COORDINATE + " до " + MAX_COORDINATE + ":");
  54.         do {
  55.             isNotCorrect = false;
  56.             try {
  57.                 y = Integer.parseInt(scan.nextLine());
  58.             }
  59.             catch (NumberFormatException e) {
  60.                 isNotCorrect = true;
  61.                 System.out.print("Некорректный ввод! Введите значение еще раз:");
  62.             }
  63.             if ((!isNotCorrect) && (y < MIN_COORDINATE || y > MAX_COORDINATE)) {
  64.                 isNotCorrect = true;
  65.                 System.out.print("Недопустимое значение! Введите значение еще раз:");
  66.             }
  67.         } while (isNotCorrect);
  68.  
  69.         System.out.println("Последовательно введите координаты X и Y каждой вершины");
  70.         System.out.print("Целое значение координаты X от " + MIN_COORDINATE + " до " + MAX_COORDINATE + ":");
  71.         do {
  72.             isNotCorrect = false;
  73.             try {
  74.                 arrX[0] = Integer.parseInt(scan.nextLine());
  75.             }
  76.             catch (NumberFormatException e) {
  77.                 isNotCorrect = true;
  78.                 System.out.print("Некорректный ввод! Введите значение еще раз:");
  79.             }
  80.             if ((!isNotCorrect) && (arrX[0] < MIN_COORDINATE || arrX[0] > MAX_COORDINATE)) {
  81.                 isNotCorrect = true;
  82.                 System.out.print("Недопустимое значение! Введите значение еще раз:");
  83.             }
  84.         } while (isNotCorrect);
  85.  
  86.         System.out.print("Целое значение координаты Y от " + MIN_COORDINATE + " до " + MAX_COORDINATE + ":");
  87.         do {
  88.             isNotCorrect = false;
  89.             try {
  90.                 arrY[0] = Integer.parseInt(scan.nextLine());
  91.             }
  92.             catch (NumberFormatException e)  {
  93.                 isNotCorrect = true;
  94.                 System.out.print("Некорректный ввод! Введите значение еще раз:");
  95.             }
  96.             if ((!isNotCorrect) && (arrY[0] < MIN_COORDINATE || arrY[0] > MAX_COORDINATE)) {
  97.                 isNotCorrect = true;
  98.                 System.out.print("Недопустимое значение! Введите значение еще раз:");
  99.             }
  100.         } while (isNotCorrect);
  101.  
  102.         i = 1;
  103.         do {
  104.             System.out.print("Целое значение координаты X от " + MIN_COORDINATE + " до " + MAX_COORDINATE + ":");
  105.             do {
  106.                 isNotCorrect = false;
  107.                 try {
  108.                     arrX[i] = Integer.parseInt(scan.nextLine());
  109.                 }
  110.                 catch (NumberFormatException e) {
  111.                     isNotCorrect = true;
  112.                     System.out.print("Некорректный ввод! Введите значение еще раз:");
  113.                 }
  114.                 if ((!isNotCorrect) && (arrX[i] < MIN_COORDINATE || arrX[i] > MAX_COORDINATE)) {
  115.                     isNotCorrect = true;
  116.                     System.out.print("Недопустимое значение! Введите значение еще раз:");
  117.                 }
  118.             } while (isNotCorrect);
  119.  
  120.             System.out.print("Целое значение координаты Y от " + MIN_COORDINATE + " до " + MAX_COORDINATE + ":");
  121.             do {
  122.                 isNotCorrect = false;
  123.                 try {
  124.                     arrY[i] = Integer.parseInt(scan.nextLine());
  125.                 }
  126.                 catch (NumberFormatException e) {
  127.                     isNotCorrect = true;
  128.                     System.out.print("Некорректный ввод! Введите значение еще раз:");
  129.                 }
  130.                 if ((!isNotCorrect) && (arrY[i] < MIN_COORDINATE || arrY[i] > MAX_COORDINATE)) {
  131.                     isNotCorrect = true;
  132.                     System.out.print("Недопустимое значение! Введите значение еще раз:");
  133.                 }
  134.             } while (isNotCorrect);
  135.  
  136.             areCoordinatesNotUnique = ((arrX[i] == arrX[i-1]) && (arrY[i] == arrY[i-1]));
  137.             if (areCoordinatesNotUnique) {
  138.                 System.out.println("Были заданы координаты той же вершины! Введите координаты следующей!");
  139.             }
  140.             else {
  141.                 i++;
  142.             }
  143.         } while(i < n);
  144.         scan.close();
  145.  
  146.         arrX[n] = arrX[0];
  147.         arrY[n] = arrY[0];
  148.  
  149.         i = 1;
  150.         n++;
  151.         do {
  152.             isPointOnLine = ((y - arrY[i - 1]) * (arrX[i] - arrX[i - 1]) == (arrY[i] - arrY[i - 1]) * (x - arrX[i - 1]));
  153.  
  154.             if (arrX[i - 1] > arrX[i]) {
  155.                 max = arrX[i - 1];
  156.                 min = arrX[i];
  157.             }
  158.             else {
  159.                 max = arrX[i];
  160.                 min = arrX[i - 1];
  161.             }
  162.             isPointBetweenXCoord = ((x >= min) && (x <= max));
  163.  
  164.             if (arrY[i - 1] > arrY[i]) {
  165.                 max = arrX[i - 1];
  166.                 min = arrX[i];
  167.             }
  168.             else {
  169.                 max = arrY[i];
  170.                 min = arrY[i - 1];
  171.             }
  172.             isPointBetweenYCoord = ((y >= min) && (y <= max));
  173.  
  174.             isPointOnPolygon = (isPointOnLine && isPointBetweenXCoord && isPointBetweenYCoord);
  175.             i++;
  176.         } while ((!isPointOnPolygon) && (i < n));
  177.  
  178.         if (isPointOnPolygon) {
  179.             System.out.println("Точка находится на одной из сторон многоугольника");
  180.         }
  181.         else {
  182.             System.out.println("Точка не находится ни на одной из сторон многоугольника");
  183.         }
  184.     }
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement