Advertisement
deced

Untitled

Dec 27th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.61 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.nio.file.Files;
  8. import java.util.Scanner;
  9. import java.util.TreeSet;
  10.  
  11. public class Main {
  12. static Scanner scanner;
  13. static final int MAX_ARRAY = 10;
  14.  
  15. static int[] inputArrayFromConsole() {
  16. int n;
  17. do {
  18. System.out.print("Введите размер массива от 2 до " + MAX_ARRAY + ": ");
  19. n = Integer.parseInt(scanner.nextLine());
  20. }
  21. while (n < 2 || n > MAX_ARRAY);
  22. System.out.println("Введите " + n + " элементов массива: ");
  23. int[] arrayOfElements = new int[n];
  24. for (int i = 0; i < n; i++)
  25. arrayOfElements[i] = Integer.parseInt(scanner.nextLine());
  26. System.out.println("Массив: ");
  27. for (int i = 0; i < n; i++)
  28. System.out.print(arrayOfElements[i] + " ");
  29. System.out.println();
  30. return arrayOfElements;
  31. }
  32.  
  33.  
  34. static int[] inputArrayFromFile(String path) throws FileNotFoundException {
  35. int n;
  36. File file = new File(path);
  37. Scanner fileScanner = new Scanner(file);
  38. n = Integer.parseInt(fileScanner.nextLine());
  39. int[] arrayOfElements = new int[n];
  40. for (int i = 0; i < n; i++)
  41. arrayOfElements[i] = Integer.parseInt(fileScanner.nextLine());
  42. System.out.println("Массив: ");
  43. for (int i = 0; i < n; i++)
  44. System.out.print(arrayOfElements[i] + " ");
  45. return arrayOfElements;
  46. }
  47.  
  48.  
  49. static byte chooseSource() {
  50. boolean isIncorrect;
  51. byte source = 0;
  52. System.out.println("Выберите, как будет осуществлятся ввод и вывод данных, через файл или консоль.");
  53. System.out.print("Пожалуйста, сделайте выбор(1 - файл; 2 - консоль): ");
  54. do {
  55. isIncorrect = false;
  56. try {
  57. source = Byte.parseByte(scanner.nextLine());
  58. } catch (Exception ex) {
  59. isIncorrect = true;
  60. System.out.print("Выберете один из предложенных вариантов ответа (1 - файл; 2 - консоль): ");
  61. }
  62. if (source != 1 && source != 2 && !isIncorrect) {
  63. isIncorrect = true;
  64. System.out.print("Выберете один из предложенных вариантов ответа (1 - файл; 2 - консоль): ");
  65. }
  66. } while (isIncorrect);
  67. return source;
  68. }
  69.  
  70.  
  71. static String inputPathToFile() {
  72. boolean isIncorrect;
  73. String path;
  74. do {
  75. isIncorrect = false;
  76. path = scanner.nextLine();
  77. File file = new File(path);
  78. if (!file.exists()) {
  79. isIncorrect = true;
  80. System.out.print("Файл не найден! Введите правильную ссылку: ");
  81. }
  82. } while (isIncorrect);
  83. return path;
  84. }
  85.  
  86.  
  87. static int[] input(byte source) throws FileNotFoundException {
  88. String path;
  89. int[] arrayOfElements = new int[]{};
  90. switch (source) {
  91. case 1:
  92. System.out.print("Введите ссылку на файл ввода: ");
  93. path = inputPathToFile();
  94. arrayOfElements = inputArrayFromFile(path);
  95. break;
  96. case 2:
  97. arrayOfElements = inputArrayFromConsole();
  98. break;
  99. }
  100. return arrayOfElements;
  101. }
  102.  
  103.  
  104. static int findMaxLength(int[] arrayOfElements) {
  105. int i = 2, position = 0, counter1, counter2, maxLength = 0;
  106. while (i <= arrayOfElements.length) {
  107. if (arrayOfElements[i] > arrayOfElements[i - 1]) {
  108. counter1 = 1;
  109. counter2 = i;
  110. while (arrayOfElements[counter2] > arrayOfElements[counter2 - 1] && counter2 <= arrayOfElements.length) {
  111. counter1++;
  112. counter2++;
  113. }
  114. if (counter1 > maxLength) {
  115. maxLength = counter1;
  116. position = i - 1;
  117. }
  118. i = i + counter1;
  119. } else
  120. i++;
  121. }
  122. return maxLength;
  123. }
  124.  
  125. static void outputToConsole(int position, int[] arrayOfElements) {
  126.  
  127. {
  128. if (position == 0)
  129. System.out.print("Участков возрастания нет.");
  130. else {
  131. System.out.println("Максимальная длина = " + position);
  132. for (int i = position; i < position - 1; i++)
  133. System.out.print(arrayOfElements[i] + " ");
  134. }
  135. }
  136. }
  137.  
  138. static void outputToFile(int position, int[] arrayOfElements, String path) throws IOException {
  139.  
  140. {
  141. FileWriter fileWriter = new FileWriter(path);
  142. if (position == 0)
  143. fileWriter.write("Участков возрастания нет.");
  144. else {
  145. fileWriter.write("Максимальная длина = " + position);
  146. for (int i = position; i < position - 1; i++)
  147. fileWriter.write(arrayOfElements[i] + " ");
  148. }
  149. }
  150. }
  151.  
  152. static void output(byte source, int position, int[] arrayOfElements) throws IOException {
  153. String path;
  154. switch (source) {
  155. case 1: {
  156. System.out.print("Введите ссылку на файл вывода: ");
  157. path = inputPathToFile();
  158. outputToFile(position, arrayOfElements, path);
  159. System.out.print("Данные успешно записаны в файл!");
  160. }
  161. case 2: {
  162. outputToConsole(position, arrayOfElements);
  163. }
  164. }
  165. }
  166.  
  167.  
  168. public static void main(String[] args) throws IOException {
  169. scanner = new Scanner(System.in);
  170. System.out.println("Данная программа находит самую длинную восходящую подпоследовательность в данной последовательности.");
  171. byte source = chooseSource();
  172. int[] arrayOfElements = input(source);
  173. int position = findMaxLength(arrayOfElements);
  174. output(source, position, arrayOfElements);
  175. }
  176.  
  177. }
  178.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement