Advertisement
dxvmxnd

Untitled

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