Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class Main {
- public static void main (String[] args){
- Scanner scan = new Scanner(System.in);
- int numberOfAngles = 0,numberOfCoordinates = 2,flagIsIncorrect = 0;
- int vectorProduct, vectorCordX1, vectorCordX2, vectorCordY1, vectorCordY2;
- boolean isIncorrect;
- final int MIN_VALUE_CORD = -100;
- final int MAX_VALUE_CORD = 100;
- final int MIN_VALUE_ANGLES = 3;
- final int MAX_VALUE_ANGLES = 15;
- System.out.println("Данная программа определяет,является ли многоугольник с заданными
- вершинами выпуклым или нет." + "\n" +
- "Диапазон ввода количества углов многоугольника: " + MIN_VALUE_ANGLES +
- "..." + MAX_VALUE_ANGLES + "." + "\n" +
- "Диапазон ввода значений координат по OX и OY: " + MIN_VALUE_CORD +
- "..." + MAX_VALUE_CORD + ".");
- do{
- System.out.println("Введите значение количества углов многоугольника: ");
- isIncorrect = false;
- try{
- numberOfAngles = Integer.parseInt(scan.nextLine());
- }catch(NumberFormatException e){
- System.out.println("Проверьте корректность ввода данных!");
- isIncorrect = true;
- }
- if (!isIncorrect && ((numberOfAngles < MIN_VALUE_ANGLES) || (numberOfAngles >
- MAX_VALUE_ANGLES))){
- System.out.println("Введите значение от " + MIN_VALUE_ANGLES + " до " +
- MAX_VALUE_ANGLES + "!");
- isIncorrect = true;
- }
- }while(isIncorrect);
- int arrayOfPoints[][] = new int [numberOfAngles][];
- for (int i = 0; i < numberOfAngles; i++)
- {
- arrayOfPoints[i] = new int[numberOfCoordinates];
- }
- for (int i = 0; i < numberOfAngles; i++)
- {
- System.out.println("Ввод координат точки " + (i + 1) + ":");
- do{
- System.out.println("Введите значение координаты по оси ОХ: ");
- isIncorrect = false;
- try{
- arrayOfPoints[i][0] = Integer.parseInt(scan.nextLine());
- }catch(NumberFormatException e){
- System.out.println("Проверьте корректность ввода данных!");
- isIncorrect = true;
- }
- if (!isIncorrect && ((arrayOfPoints[i][0] < MIN_VALUE_CORD) || (arrayOfPoints[i][0] >
- MAX_VALUE_CORD))){
- System.out.println("Введите значение от " + MIN_VALUE_CORD + " до " + MAX_VALUE_CORD
- + "!");
- isIncorrect = true;
- }
- }while(isIncorrect);
- do{
- System.out.println("Введите значение координаты по оси ОY: ");
- isIncorrect = false;
- try{
- arrayOfPoints[i][1] = Integer.parseInt(scan.nextLine());
- }catch(NumberFormatException e){
- System.out.println("Проверьте корректность ввода данных!");
- isIncorrect = true;
- }
- if (!isIncorrect && ((arrayOfPoints[i][1] < MIN_VALUE_CORD) || (arrayOfPoints[i][1] >
- MAX_VALUE_CORD))){
- System.out.println("Введите значение от " + MIN_VALUE_CORD + " до " + MAX_VALUE_CORD
- + "!");
- isIncorrect = true;
- }
- }while(isIncorrect);
- }
- scan.close();
- int minNumberOfAngles = numberOfAngles - 2;
- for (int i = 0; i < minNumberOfAngles; i++)
- {
- vectorCordX1 = arrayOfPoints[i + 1][0] - arrayOfPoints[i][0];
- vectorCordY1 = arrayOfPoints[i + 1][1] - arrayOfPoints[i][1];
- vectorCordX2 = arrayOfPoints[i + 2][0] - arrayOfPoints[i + 1][0];
- vectorCordY2 = arrayOfPoints[i + 2][1] - arrayOfPoints[i + 1][1];
- vectorProduct = vectorCordX1 * vectorCordY2 - vectorCordX2 * vectorCordY1;
- if (vectorProduct < 0)
- {
- flagIsIncorrect += 1;
- }
- }
- vectorCordX1 = arrayOfPoints[numberOfAngles - 1][0] - arrayOfPoints[numberOfAngles - 2][0];
- vectorCordY1 = arrayOfPoints[numberOfAngles - 1][1] - arrayOfPoints[numberOfAngles - 2][1];
- vectorCordX2 = arrayOfPoints[0][0] - arrayOfPoints[numberOfAngles - 1][0];
- vectorCordY2 = arrayOfPoints[0][1] - arrayOfPoints[numberOfAngles - 1][1];
- vectorProduct = vectorCordX1 * vectorCordY2 - vectorCordX2 * vectorCordY1;
- if (vectorProduct < 0)
- {
- flagIsIncorrect += 1;
- }
- if (flagIsIncorrect > 0)
- {
- System.out.println("Многоугольник не является выпуклым.");
- }
- else System.out.println("Многоугольник является выпуклым.");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement