Advertisement
Vladislav8653

7.2

Jul 31st, 2023
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.34 KB | None | 0 0
  1. import java.io.File;
  2. import java.util.Scanner;
  3.  
  4. public class Graph {
  5.     private static final Scanner scanner = new Scanner(System.in);
  6.     static Scanner fileScanner;
  7.     public static void main(String[] args) {
  8.         int num;
  9.         byte[][] arr;
  10.         System.out.println("Program convert the adjacency matrix into an incident list.");
  11.         System.out.println("Enter type of input." + '\n' + "1 is console input, 0 is file input.");
  12.         boolean chose = choose();
  13.         if (chose) {
  14.             System.out.println("Input size of matrix:");
  15.             num = inputMatrixSize();
  16.             System.out.println("Input matrix elements:");
  17.             arr = inputMatrix(num);
  18.         } else {
  19.             String path = inputFilePath();
  20.             num = inputSizeOfMatrixFromFile(path);
  21.             arr = inputMatrixFile(path, num);
  22.         }
  23.         String result = showIncidentList(arr);
  24.         System.out.println(result);
  25.     }
  26.     private static String showIncidentList (byte[][] arr) {
  27.         String oneVertex = "";
  28.         String result = "";
  29.         boolean isExist = false;
  30.         for (int i = 0; i < arr.length; i++) {
  31.             for (int j = 0; j < arr.length; j++) {
  32.                 if (arr[i][j] == 1) {
  33.                     isExist = true;
  34.                     oneVertex = oneVertex + (j+ 1) + " ";
  35.                 }
  36.             }
  37.             if (isExist) {
  38.                 result = result + i + ": " + oneVertex + '\n';
  39.                 isExist = false;
  40.                 oneVertex = "";
  41.             }
  42.         }
  43.         return result;
  44.     }
  45.  
  46.     private static boolean choose() {
  47.         int inputNumber = 0;
  48.         boolean isIncorrect;
  49.         final int MIN_NUM = 0;
  50.         final int MAX_NUM = 1;
  51.         do {
  52.             isIncorrect = false;
  53.             try {
  54.                 inputNumber = Integer.parseInt(scanner.nextLine());
  55.             } catch (Exception e) {
  56.                 isIncorrect = true;
  57.                 System.out.println("Please, enter a number.");
  58.             }
  59.             if (!isIncorrect && (inputNumber < MIN_NUM || inputNumber > MAX_NUM)) {
  60.                 System.out.println("You are out of input range!");
  61.                 isIncorrect = true;
  62.             }
  63.         } while (isIncorrect);
  64.         return inputNumber == 1;
  65.     }
  66.  
  67.     private static int inputData() {
  68.         int n = 0;
  69.         boolean isIncorrect;
  70.         do {
  71.             isIncorrect = false;
  72.             try {
  73.                 n = Integer.parseInt(scanner.nextLine());
  74.             } catch (Exception e) {
  75.                 isIncorrect = true;
  76.                 System.out.println("Please, enter a integer number:");
  77.             }
  78.         } while (isIncorrect);
  79.         return n;
  80.     }
  81.     private static int inputMatrixElement() {
  82.         boolean isIncorrect;
  83.         int n;
  84.         do {
  85.             n = inputData();
  86.             isIncorrect = false;
  87.             if ( (n != 0) && (n != 1)) {
  88.                 isIncorrect = true;
  89.                 System.out.println("Only 1 or 0 are valid.");
  90.             }
  91.         } while (isIncorrect);
  92.         return n;
  93.     }
  94.  
  95.     private static int inputMatrixSize() {
  96.         boolean isIncorrect;
  97.         final int MIN_SIZE = 1;
  98.         final int MAX_SIZE = 10;
  99.         int num;
  100.         do {
  101.             num = inputData();
  102.             isIncorrect = false;
  103.             if ((num < MIN_SIZE) || (num > MAX_SIZE)) {
  104.                 System.out.println("Matrix size should be in the range from 1 to 10:");
  105.                 isIncorrect = true;
  106.             }
  107.         } while (isIncorrect);
  108.         return num;
  109.     }
  110.  
  111.     private static byte[][] inputMatrix(int num) {
  112.         byte[][] arr = new byte[num][num];
  113.         for (int i = 0; i < arr.length; i++)
  114.             for (int j = 0; j < arr.length; j++)
  115.                 arr[i][j] = (byte) inputMatrixElement();
  116.         if (!checkMatrix(arr)){
  117.             System.out.println("bro, input correct matrix");
  118.             inputMatrix(num);
  119.         }
  120.         return arr;
  121.     }
  122.     private static boolean checkMatrix(byte[][] matrix) {
  123.         for (int i = 0; i < matrix.length; i++) {
  124.             for (int j = 0; j < matrix.length; j++) {
  125.                 if (matrix[i][j] != matrix[j][i]) return false;
  126.             }
  127.         }
  128.         return true;
  129.     }
  130.  
  131.     private static String inputFilePath() {
  132.         String path;
  133.         boolean isIncorrect;
  134.         do {
  135.             isIncorrect = false;
  136.             System.out.println("Input file path:");
  137.             path = scanner.nextLine();
  138.             File file = new File(path);
  139.             if (!file.exists()) {
  140.                 System.out.println("Wrong way to file.");
  141.                 isIncorrect = true;
  142.             }
  143.             if (!file.canRead() && file.exists()) {
  144.                 System.out.println("Impossible to read a file.");
  145.                 isIncorrect = true;
  146.             }
  147.             if (!file.canWrite() && file.canRead()) {
  148.                 System.out.println("Impossible to write a file.");
  149.                 isIncorrect = true;
  150.             }
  151.         } while (isIncorrect);
  152.         return path;
  153.     }
  154.     private static int inputSizeOfMatrixFromFile(String path) {
  155.         int num = 0;
  156.         boolean isIncorrect;
  157.         final int MIN = 1;
  158.         final int MAX = 10;
  159.         do {
  160.             isIncorrect = false;
  161.             try {
  162.                 fileScanner = new Scanner(new File(path));
  163.                 num = fileScanner.nextInt();
  164.             } catch (Exception q) {
  165.                 isIncorrect = true;
  166.                 System.out.println("Check file.");
  167.                 path = inputFilePath();
  168.             }
  169.             if (!isIncorrect && ((num < MIN) || (num > MAX))) {
  170.                 isIncorrect = true;
  171.                 System.out.println("Array size should be in the range from 1 to 10:");
  172.                 path = inputFilePath();
  173.             }
  174.         } while (isIncorrect);
  175.         return num;
  176.     }
  177.     private static boolean checkBinary (int n) {
  178.         return (n == 1) || (n == 0);
  179.     }
  180.  
  181.     private static byte[][] inputMatrixFile(String path, int num) {
  182.         boolean isIncorrect;
  183.         byte[][] arr = new byte[num][num];
  184.         int n;
  185.         do {
  186.             isIncorrect = false;
  187.             try {
  188.                 fileScanner = new Scanner(new File(path));
  189.                 fileScanner.nextLine();
  190.                 for (int i = 0; (i < arr.length); i++) {
  191.                     for (int j = 0; j < arr.length; j++) {
  192.                         n = fileScanner.nextInt();
  193.                         if (checkBinary(n)) {
  194.                             arr[i][j] = (byte) n;
  195.                         } else {
  196.                             isIncorrect = true;
  197.                             System.out.println("Matrix should consist of ones and zeros only!");
  198.                             path = inputFilePath();
  199.                         }
  200.                     }
  201.                 }
  202.                 if (!checkMatrix(arr)){
  203.                     System.out.println("bro, input correct matrix");
  204.                     isIncorrect = true;
  205.                     path = inputFilePath();
  206.                 }
  207.             } catch (Exception q) {
  208.                 isIncorrect = true;
  209.                 System.out.println("Reading of array elements failed.");
  210.                 path = inputFilePath();
  211.             }
  212.         } while (isIncorrect);
  213.         return arr;
  214.     }
  215. }
  216.  
  217.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement