Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.Scanner;
- class MyClass {
- static Scanner scanner = new Scanner(System.in);
- public static void printTask() {
- System.out.println("Данная программа в матрице порядка 2n меняет местами подматрицы порядка n");
- System.out.println("1 2");
- System.out.println("3 4");
- System.out.println("---");
- System.out.println("4 3");
- System.out.println("1 2");
- }
- public static double[][] swap(double[][] matrix) {
- int n = matrix.length - 1;
- int n1 = n / 2;
- for (int i = 0; i <= n1; i++)
- for (int j = 0; j <= n; j++) {
- double temp = matrix[i][j];
- matrix[i][j] = matrix[n1 + i + 1][j];
- matrix[n1 + i + 1][j] = temp;
- }
- for (int i = 0; i <= n1; i++)
- for (int j = 0; j <= n1; j++) {
- double temp = matrix[i][j];
- matrix[i][j] = matrix[i][n1 + j + 1];
- matrix[i][n1 + j + 1] = temp;
- }
- return matrix;
- }
- public static void userInputArrayFromConsole(int n) throws FileNotFoundException {
- final int MIN_VALUE = -500;
- final int MAX_VALUE = 500;
- double[][] matrix = new double[n][];
- System.out.println("Введите элементы массива в диапазоне " + MIN_VALUE + ".." + MAX_VALUE + ":");
- for (int i = 0; i < n; i++) {
- matrix[i] = new double[n];
- for (int j = 0; j < n; j++) {
- matrix[i][j] = inputValue(MIN_VALUE, MAX_VALUE);
- }
- }
- outputMethod(swap(matrix));
- }
- public static PrintWriter userOutputPath() throws FileNotFoundException {
- String path;
- PrintWriter file;
- System.out.println("Введите абсолютный путь к файлу для вывода результата");
- String zero = scanner.nextLine();
- path = scanner.nextLine();
- file = new PrintWriter(path);
- return file;
- }
- public static Scanner userInputPath() throws FileNotFoundException {
- String path;
- boolean isNotValid;
- Scanner file = null;
- String zero = scanner.nextLine();
- do {
- isNotValid = false;
- System.out.println("Введите абсолютный путь к файлу с входными данными");
- path = scanner.nextLine();
- try {
- file = new Scanner(new File(path));
- } catch (FileNotFoundException e) {
- isNotValid = true;
- System.out.println("Файл не найден");
- }
- } while (isNotValid);
- return file;
- }
- public static void userInputFromFile() throws FileNotFoundException {
- int n;
- Scanner file = userInputPath();
- n = file.nextInt();
- double[][] matrix = new double[n][];
- for (int i = 0; i < n; i++) {
- matrix[i] = new double[n];
- for (int j = 0; j < n; j++)
- matrix[i][j] = file.nextInt();
- }
- outputMethod(swap(matrix));
- }
- public static void printWithPath(double[][] matrix) throws FileNotFoundException {
- PrintWriter out = userOutputPath();
- for (int i = 0; i < matrix.length; i++) {
- for (int j = 0; j < matrix[i].length; j++)
- out.printf("%.0f ", matrix[i][j]);
- out.println();
- }
- out.close();
- System.out.println("Результат работы помещён в файл");
- }
- public static void printWithoutPath(double[][] matrix) {
- for (int i = 0; i < matrix.length; i++) {
- for (int j = 0; j < matrix[i].length; j++)
- System.out.printf("%.0f ", matrix[i][j]);
- System.out.println();
- }
- }
- public static void outputMethod(double[][] matrix) throws FileNotFoundException {
- int method;
- System.out.println("Куда хотите вывести результат?");
- System.out.println("1 - в консоль");
- System.out.println("2 - в файл");
- do {
- method = scanner.nextInt();
- switch (method) {
- case 1: { printWithoutPath(matrix); break; }
- case 2: { printWithPath(matrix); break; }
- default: System.out.println("Введите корректный способ вывода");
- }
- } while (method != 2 && method != 1);
- }
- public static void inputMethod() throws FileNotFoundException {
- int method;
- System.out.println("Каким способом хотите ввести данные?");
- System.out.println("1 - с помощью консоли");
- System.out.println("2 - с помощью файла");
- do {
- method = scanner.nextInt();
- switch (method) {
- case 1: { userInputFromConsole(); break; }
- case 2: { userInputFromFile(); break; }
- default: System.out.println("Введите корректный способ ввода");
- }
- } while (method != 2 && method != 1);
- }
- public static void userInputFromConsole() throws FileNotFoundException {
- final int MIN_SIZE = 1;
- final int MAX_SIZE = 20;
- int n;
- System.out.print("Введите порядок матрицы 2n в диапазоне " + MIN_SIZE + ".." + MAX_SIZE + ": ");
- n = inputValue(MIN_SIZE, MAX_SIZE);
- userInputArrayFromConsole(n);
- }
- public static int inputValue(int min, int max) {
- int currentValue;
- boolean isNotValid = true;
- do {
- currentValue = scanner.nextInt();
- if (currentValue >= min && currentValue <= max)
- isNotValid = false;
- else
- System.out.println("Введите число в заданном диапазоне");
- } while (isNotValid);
- return currentValue;
- }
- public static void main(String[] args) throws Exception {
- printTask();
- inputMethod();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement