Advertisement
dxvmxnd

Untitled

Mar 3rd, 2024 (edited)
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.88 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.Scanner;
  3.  
  4. public class Main {
  5. private static final Scanner scanner = new Scanner(System.in);
  6. public static int[] sortingRow(int[] arr) {
  7. int n;
  8. int minIndex;
  9. int temp;
  10.  
  11. minIndex = 0;
  12. temp = 0;
  13. n = arr.length;
  14.  
  15. for (int i = 0; i < n - 1; i++) {
  16. minIndex = i;
  17. for (int j = i + 1; j < n; j++) {
  18. if (arr[j] < arr[minIndex]) {
  19. minIndex = j;
  20. }
  21. }
  22. if (minIndex != i) {
  23. temp = arr[i];
  24. arr[i] = arr[minIndex];
  25. arr[minIndex] = temp;
  26. }
  27. }
  28.  
  29. return arr;
  30. }
  31. public static int[][] sortingMatrix(int[][] matrix) {
  32. int[][] sortedMatrix;
  33. int[] row;
  34.  
  35. sortedMatrix = new int[matrix.length][matrix.length];
  36.  
  37. for(int i = 0; i < matrix.length; i++) {
  38. row = sortingRow(matrix[i]);
  39. sortedMatrix[i] = row;
  40. }
  41.  
  42. return sortedMatrix;
  43. }
  44.  
  45. public static void main(String[] args) {
  46. int[][] matrix;
  47. int[][] sortedMatrix;
  48.  
  49. taskEssence();
  50. matrix = sourceChoice();
  51. sortedMatrix = sortingMatrix(matrix);
  52. output(sortedMatrix);
  53. }
  54. public static int exceptionRead(int i, int j) {
  55. boolean isIncorrect;
  56. int number;
  57.  
  58. number = 0;
  59. do {
  60. isIncorrect = false;
  61. System.out.print("Введите " + (i+1) + "," + (j+1) + " элемент матрицы: ");
  62. try {
  63. number = Integer.parseInt(scanner.nextLine());
  64. } catch (NumberFormatException exception) {
  65. System.err.println("Неверный ввод данных!");
  66. isIncorrect = true;
  67. }
  68. } while (isIncorrect);
  69.  
  70. return number;
  71. }
  72. public static void taskEssence() {
  73. System.out.println("Данная программа сортирует строки матрицы путем быстрого выбора.");
  74. }
  75. public static int[][] sourceChoice() {
  76. int choiceNumber;
  77. boolean isIncorrect;
  78. int[][] matrix = new int[0][0];
  79. choiceNumber = -1;
  80.  
  81. System.out.println("Выберите, откуда будут вводиться данные: ");
  82. do {
  83. isIncorrect = false;
  84. System.out.println("Введите 0, если с консоли; 1, если с файла");
  85. try {
  86. choiceNumber = Integer.parseInt(scanner.nextLine());
  87. } catch (NumberFormatException exception) {
  88. isIncorrect = true;
  89. System.err.println("Неверный ввод данных!");
  90. }
  91. if (((choiceNumber != 0) && (choiceNumber != 1)) || (isIncorrect == true)) {
  92. isIncorrect = true;
  93. System.err.println("Число должно быть или 0, или 1");
  94. }
  95. } while (isIncorrect);
  96. if (choiceNumber == 0) {
  97. matrix = fromConsole();
  98. } else {
  99. matrix = fromFile();
  100. }
  101. return matrix;
  102. }
  103. public static int[][] fromFile() {
  104. String path;
  105. int size;
  106. int[][] matrix;
  107.  
  108. System.out.println("При записи данных из файла, учтите, что на первой строке написано количество строк и столбцов матрицы,, а далее с новой строки прописывается сама матрица.");
  109. path = pathChoice();
  110. size = sizeMatrixFromFile(path);
  111. matrix = new int[size][size];
  112. matrix = matrixReadFile(path, size, matrix);
  113.  
  114. return matrix;
  115. }
  116. public static String pathChoice() {
  117. String path;
  118. boolean isIncorrect;
  119.  
  120. do {
  121. isIncorrect = false;
  122. System.out.println("Введите путь к файлу: ");
  123. path = scanner.nextLine();
  124.  
  125. File file = new File(path);
  126. if (!file.exists()) {
  127. System.out.println("По указанном пути файл не найден.");
  128. isIncorrect = true;
  129. } else if (!getExtension(path).equals("txt")) {
  130. System.err.println("Ошибка, неправильный тип файла!");
  131. isIncorrect = true;
  132. }
  133. } while (isIncorrect);
  134. return path;
  135.  
  136. }
  137. public static String getExtension(String path) {
  138. int pos = path.lastIndexOf('.');
  139. if (pos <= 0) {
  140. return "";
  141. }
  142. return path.substring(pos + 1);
  143. }
  144. public static int sizeMatrixFromFile(String path) {
  145. int size;
  146. boolean isIncorrect;
  147.  
  148. System.out.println("Считывание размера......");
  149. size = 0;
  150.  
  151. isIncorrect = false;
  152. try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
  153. try {
  154. size = Integer.parseInt(reader.readLine());
  155. } catch(NumberFormatException exception) {
  156. isIncorrect = true;
  157. }
  158. if ((size < 1) || (isIncorrect == true)) {
  159. isIncorrect = true;
  160. System.out.println("Неверный ввод данных! Впишите данные с клавиатуры.");
  161. size = sizeMatrixFromConsole();
  162. }
  163. else {
  164. System.out.println(size);
  165. }
  166. } catch (IOException ioException) {
  167. isIncorrect = true;
  168. }
  169.  
  170.  
  171. return size;
  172.  
  173. }
  174. public static int[][] matrixReadFile(String path, int size, int[][] matrix) {
  175. boolean isIncorrect;
  176.  
  177. System.out.println("Считывание матрицы...");
  178.  
  179. isIncorrect = false;
  180. try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
  181. reader.readLine();
  182. for (int i = 0; i < size; i++) {
  183. String[] elements = reader.readLine().split(" ");
  184. for (int j = 0; j < size; j++) {
  185. try {
  186. matrix[i][j] = Integer.parseInt(elements[j]);
  187. } catch(NumberFormatException exception) {
  188. System.out.println("Неверный ввод данных! Запишите данные с клавиатуры.");
  189. matrix[i][j] = exceptionRead(i, j);
  190. }
  191.  
  192.  
  193. }
  194. System.out.println();
  195. }
  196. } catch (IOException ioException) {
  197. isIncorrect = true;
  198. System.err.println("Неверный ввод данных! Измените входные данные и перезапустите программу.");
  199. }
  200.  
  201.  
  202. return matrix;
  203. }
  204. public static void output(int[][] matrix) {
  205. String path;
  206. boolean isIncorrect;
  207.  
  208. System.out.println("Матрица, строки которой были отсортированы методом простого выбора:");
  209. for(int i = 0; i < matrix.length; i++) {
  210. for(int j = 0; j < matrix.length; j++) {
  211. System.out.print(matrix[i][j] + " ");
  212. }
  213. System.out.println();
  214. }
  215. path = outputPath();
  216. do {
  217. isIncorrect = false;
  218. try (FileWriter writer = new FileWriter(path, true)) {
  219. writer.write("Матрица, строки которой были отсортированы методом простого выбора:");
  220. for(int i = 0; i < matrix.length; i++) {
  221. for(int j = 0; j < matrix.length; j++) {
  222. writer.write(matrix[i][j] + " ");
  223. }
  224. writer.write("");
  225. }
  226.  
  227. } catch (IOException ioException) {
  228. System.err.println("Ошибка при записи в файл");
  229. isIncorrect = true;
  230. }
  231. } while (isIncorrect);
  232. System.out.println("Данные записаны в файл.");
  233. }
  234. public static String outputPath() {
  235. String path;
  236. boolean isIncorrect;
  237.  
  238. do {
  239. isIncorrect = false;
  240. System.out.println("Введите путь к файлу для вывода: ");
  241. System.out.println();
  242. path = scanner.nextLine();
  243.  
  244. File file = new File(path);
  245. if (!file.exists()) {
  246. System.out.println("По указанном пути файл не найден.");
  247. isIncorrect = true;
  248. } else if (!getExtension(path).equals("txt")) {
  249. System.err.println("Ошибка, неправильный тип файла!");
  250. isIncorrect = true;
  251. }
  252. } while (isIncorrect);
  253. return path;
  254. }
  255. public static int[][] fromConsole() {
  256. int size;
  257.  
  258. int[][] matrix;
  259. size = sizeMatrixFromConsole();
  260. matrix = new int[size][size];
  261. matrix = matrixReadConsole(size, matrix);
  262.  
  263. return matrix;
  264.  
  265. }
  266. public static int sizeMatrixFromConsole() {
  267. boolean isIncorrect;
  268. int size;
  269.  
  270. size = 0;
  271. do {
  272. isIncorrect = false;
  273. System.out.print("Введите размер матрицы: ");
  274. try {
  275. size = Integer.parseInt(scanner.nextLine());
  276. if (!isIncorrect && (size < 1)) {
  277. System.err.println("Неверный ввод данных!");
  278. isIncorrect = true;
  279. }
  280. } catch (NumberFormatException exception) {
  281. System.err.println("Неверный ввод данных!");
  282. isIncorrect = true;
  283. }
  284.  
  285. } while (isIncorrect);
  286.  
  287. return size;
  288. }
  289. public static int[][] matrixReadConsole(int size, int[][] matrix) {
  290. boolean isIncorrect;
  291. for (int i = 0; i < size; i++) {
  292. for (int j = 0; j < size; j++) {
  293. do {
  294. isIncorrect = false;
  295. System.out.print("Введите элемент " + (i+1) + "," + (j+1) + " элемент матрицы: ");
  296. try {
  297. matrix[i][j] = Integer.parseInt(scanner.nextLine());
  298. } catch (NumberFormatException exception) {
  299. System.err.println("Неверный ввод данных!");
  300. isIncorrect = true;
  301. }
  302.  
  303. } while (isIncorrect);
  304. }
  305. }
  306. return matrix;
  307.  
  308. }
  309. }
  310.  
  311.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement