Удалить из матрицы строку и столбец - C (СИ)
Формулировка задачи:
Задача такова: реализуйте следующее преобразование двумерной матрицы: при передаче в выходную матрицу их исходной изымают мы строка и столбец с заданными номерами, как при вычислении определителя.
Решение задачи: «Удалить из матрицы строку и столбец»
textual
Листинг программы
#include <stdio.h>
#define N 3
int input_matrix[N][N] = {
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
};
int output_matrix[N - 1][N - 1];
void delete_line_and_column(int line, int column)
{
int x = 0;
for( int i = 0; i < N; ++i ) {
int y = 0;
if( i != line ) {
for( int j = 0; j < N; ++j ) {
if( j != column ) {
output_matrix[x][y] = input_matrix[i][j];
++y;
}
}
++x;
}
}
}
int main(void)
{
delete_line_and_column(1, 1);
for( int i = 0; i < N - 1; ++i ) {
for( int j = 0; j < N - 1; ++j ) {
printf("matrix[%d][%d] = %d\n", i, j, output_matrix[i][j]);
}
}
return 0;
}
Объяснение кода листинга программы
В этом коде удаляется указанная строка и столбец из матрицы. Список действий:
- Создаётся матрица размером N на N, заполненная значениями.
- Создаётся матрица output_matrix размером N-1 на N-1, которая будет использоваться для хранения матрицы после удаления строки и столбца.
- В функции delete_line_and_column() происходит итерация по элементам матрицы input_matrix.
- Если номер строки не равен указанной для удаления, то происходит итерация по элементам этой строки.
- Если номер столбца не равен указанному для удаления, то элемент копируется в output_matrix.
- После завершения всех итераций, в output_matrix содержится матрица, в которой удалена указанная строка и столбец.
- В функции main() вызывается функция delete_line_and_column() с указанными номерами строки и столбца.
- Выводится на экран полученная матрица.
- Функция main() возвращает 0, что означает успешное завершение работы программы.