Загрузка данных
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
System.out.print("Введите количество строк N: ");
int n = scanner.nextInt();
System.out.print("Введите количество столбцов M: ");
int m = scanner.nextInt();
int[][] matrix = new int[n][m];
System.out.println("\nИсходная матрица:");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
matrix[i][j] = random.nextInt(100) + 1;
System.out.print(matrix[i][j] + "\t");
}
System.out.println();
}
// Поиск максимального элемента и его координат
int maxVal = matrix[0][0];
int maxRow = 0;
int maxCol = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (matrix[i][j] > maxVal) {
maxVal = matrix[i][j];
maxRow = i;
maxCol = j;
}
}
}
System.out.println("\nМаксимальный элемент: " + maxVal + " на позиции (" + maxRow + ", " + maxCol + ")");
// Перемещаем максимальный элемент в верхний левый угол (0, 0)
swapRows(matrix, maxRow, 0);
swapCols(matrix, maxCol, 0);
System.out.println("\nМатрица после перемещения максимального элемента в (0, 0):");
printMatrix(matrix);
// Поиск минимального элемента и его НОВЫХ координат
int minVal = matrix[0][0];
int minRow = 0;
int minCol = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (matrix[i][j] < minVal) {
minVal = matrix[i][j];
minRow = i;
minCol = j;
}
}
}
System.out.println("\nМинимальный элемент: " + minVal + " на новой позиции (" + minRow + ", " + minCol + ")");
// 6. Проверяем, можно ли переместить минимальный элемент в правый нижний угол
// Если он находится в 0 строке или 0 столбце то при перестановке
// мы неизбежно сдвинем максимальный элемент с места (0, 0).
if (minRow == 0 || minCol == 0) {
System.out.println("\nНЕЛЬЗЯ поместить минимальный элемент в правый нижний угол, " +
"так как он находится в 0 строке или 0 столбце. " +
"Его перемещение нарушит положение максимального элемента в (0, 0).");
} else {
// Перемещаем минимальный элемент в правый нижний угол (n-1, m-1)
swapRows(matrix, minRow, n - 1);
swapCols(matrix, minCol, m - 1);
System.out.println("\nМинимальный элемент УСПЕШНО перемещен в правый нижний угол (" + (n - 1) + ", " + (m - 1) + "):");
printMatrix(matrix);
}
scanner.close();
}
// обмен двух строк матрицы местами
public static void swapRows(int[][] matrix, int r1, int r2) {
if (r1 == r2) return; // Если строки совпадают, ничего не делаем
for (int j = 0; j < matrix[0].length; j++) {
int temp = matrix[r1][j];
matrix[r1][j] = matrix[r2][j];
matrix[r2][j] = temp;
}
}
// обмен двух столбцов матрицы местами
public static void swapCols(int[][] matrix, int c1, int c2) {
if (c1 == c2) return; // Если столбцы совпадают, ничего не делаем
for (int i = 0; i < matrix.length; i++) {
int temp = matrix[i][c1];
matrix[i][c1] = matrix[i][c2];
matrix[i][c2] = temp;
}
}
// вывод матрицы на экран
public static void printMatrix(int[][] matrix) {
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
System.out.print(matrix[i][j] + "\t");
}
System.out.println();
}
}
}