Условие задачи:
Дана действительная квадратная матрица порядка , натуральные числа . Из матрицы удалить -строку и -столбец.
Тесты:
Матрица. | Полученная Матрица | |||
4 | 10 10 20 20 30 30 40 40 50 50 60 60 70 70 80 80 |
1 | 1 | 30 40 40 50 60 60 70 80 80 |
5 | 1.1 1.1 1.1 1.1 1.1 2.2 2.2 2.2 2.2 2.2 3.3 3.3 3.3 3.3 3.3 4.4 4.4 4.4 4.4 4.4 5.5 5.5 5.5 5.5 5.5 |
2 | 3 | 1.1 1.1 1.1 1.1 3.3 3.3 3.3 3.3 4.4 4.4 4.4 4.4 5.5 5.5 5.5 5.5 |
3 | 2 -2 2 3 -3 3 5 -5 5 |
1 | 3 | 3 -3 4 -4 |
Код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) { Scanner x = new Scanner (System.in); int n; n = x.nextInt(); double [][]m = new double[n][n]; double [][]m1 = new double[n-1][n-1]; for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { m[i][j] = x.nextDouble(); } } int deli, delj; deli = x.nextInt(); delj = x.nextInt(); for (int i=0, ln=0; ln<n-1;) { if (i!=deli-1) { for (int j=0, cn=0; cn<n-1; j++, cn++) { if (j==delj-1) j++; m1[ln][cn]=m[i][j]; } i++; ln++; } else i++; } m=m1; for (int i=0; i<n-1; i++) { for (int j=0; j<n-1; j++) { System.out.print(m[i][j]+" "); } System.out.println(); } } } |
Алгоритм:
- Пользователь вводит порядок матрицы и её элементы.Затем он вводит -строку и -столбец, которые он хочет удалить.
- В первом цикле создаем переменную — индекс строки нового массива со значением 0. Проверяем, если указанный нам номер строки совпадает с текущим, то мы переходим на следующую по номеру строку, так как эта строка нам больше не понадобится.
- Если не совпадает, во внутреннем цикле создаем переменную — номер столбца нового массива со значением 0. Проверяем или совпадает индекс текущего столбца с индексом указанным нам. Если да, то увеличиваем на 1 индекс нашего столбца ( этим мы «обращаем свое внимание» на следующий столбик, игнорируя этот ).
- После этого присваиваем значения текущего индекса строки и столбца, получившимся в ходе циклов,значениям индексов нового массива. С помощью внутреннего цикла заполняем данную строку до конца.
- После заполнения увеличиваем на 1 индексы данного и нового массива ( переходим на следующую строку матрицы ). Возвращаемся к условию внешнего цикла и продолжаем заполнять новый массив.
- Данному массиву присваиваем новый. В конце выводим полученный массив.
Работающая версия программы на ideone.com
Хорошо.
Но мне кажется, что Вы описываете не алгоритм работы, а саму программу. В этом нет необходимости если в программе нет каких-то особо тонких моментов.