Удаление строки и столбца в матрице с использованием других матриц - C (СИ)
Формулировка задачи:
Задача:
сделать программу, удаляющую из матрицы строку с самым минимальным элементом и столбец с самым максимальным.
Надо сделать через новые матрицы
Я хоть задание правильно понял или нет?
// ïðîãðГ*ììГ* ГіГ¤Г*ëÿåò ГЁГ§ Г¬Г*òðèöû ñòðîêó Г± Г±Г*ìûì ìèГ*ГЁГ¬Г*ëüГ*ûì // ГЁ ñòîëáåö Г± Г±Г*ìûì Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*ûì ýëåìåГ*òîì #include <conio.h> #include <stdio.h> int minf(int**,int,int); int maxf(int**,int,int); int main() { int n,m,i,j,k=0,min,max; printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m); int a[n-1][m],b[n][m-1]; // ââîä/âûâîä Г¬Г*òðèöû "x" int** x=new int*[n]; for(i=0;i<n;i++) { x[i]=new int[m]; for(j=0;j<m;j++) { k++; printf("%d element = ",k); scanf("%d",&x[i][j]); } } printf("\n"); for(i=0;i<n;i++) { for(j=0;j<m;j++) printf("%3d",x[i][j]); printf("\n"); } printf("\n"); // ïîèñê, âûâîä Г¬Г*òðèö Г± ГіГ¤Г*ëåГ*Г*ûìè ýëåìåГ*ГІГ*ìè min=minf(x,n,m); max=maxf(x,n,m); printf("min = %d\n",min+1); printf("max = %d\n",max+1); for(i=0;i<n;i++) for(j=0;j<m;j++) if(i!=min) a[i][j]=x[i][j]; for(i=0;i<n;i++) for(j=0;j<m;j++) if(j!=max) b[i][j]=x[i][j]; for(i=0;i<n-1;i++) { for(j=0;j<m;j++) printf("%3d",a[i][j]); printf("\n"); } printf("\n"); for(i=0;i<n;i++) { for(j=0;j<m-1;j++) printf("%3d",b[i][j]); printf("\n"); } getch(); return 0; } // ïîèñê ñòðîêè Г± ìèГ*ГЁГ¬Г*ëüГ*ûì ýëåìåГ*òîì int minf(int** y,int n, int m) { int i,j,k,k1=0; k=y[0][0]; for(i=0;i<n;i++) for(j=0;j<m;j++) if(y[i][j]<k) {k=y[i][j]; k1=i;} return(k1); } // ïîèñê ñòîëáöГ* Г± Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*ûì ýëåèåГ*òîì int maxf(int** y,int n, int m) { int i,j,k,k1=0; k=y[0][0]; for(i=0;i<n;i++) for(j=0;j<m;j++) if(y[i][j]>k) {k=y[i][j]; k1=j;} return(k1); }
Решение задачи: «Удаление строки и столбца в матрице с использованием других матриц»
textual
Листинг программы
// ïðîãðГ*ììГ* ГіГ¤Г*ëÿåò ГЁГ§ Г¬Г*òðèöû ñòðîêó Г± Г±Г*ìûì ìèГ*ГЁГ¬Г*ëüГ*ûì // ГЁ ñòîëáåö Г± Г±Г*ìûì Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*ûì ýëåìåГ*òîì #include <conio.h> #include <stdio.h> int minf(int**,int,int); int maxf(int**,int,int); int main() { int n,m,i,j,k=0,min,max; printf("n = "); scanf("%d",&n); printf("m = "); scanf("%d",&m); int a[n-1][m],b[n][m-1]; // ââîä/âûâîä Г¬Г*òðèöû "x" int** x=new int*[n]; for(i=0;i<n;i++) { x[i]=new int[m]; for(j=0;j<m;j++) { k++; printf("%d element = ",k); scanf("%d",&x[i][j]); } } printf("\n"); for(i=0;i<n;i++) { for(j=0;j<m;j++) printf("%3d",x[i][j]); printf("\n"); } printf("\n"); // ïîèñê, âûâîä Г¬Г*òðèö Г± ГіГ¤Г*ëåГ*Г*ûìè ýëåìåГ*ГІГ*ìè min=minf(x,n,m); max=maxf(x,n,m); printf("min = %d\n",min+1); printf("max = %d\n",max+1); printf("\n"); for(i=0;i<n;i++) for(j=0;j<m;j++) { if(i<min) a[i][j]=x[i][j]; if(i>min) a[i-1][j]=x[i][j]; } for(i=0;i<n;i++) for(j=0;j<m;j++) { if(j<max) b[i][j]=x[i][j]; if(j>max) b[i][j-1]=x[i][j]; } for(i=0;i<n-1;i++) { for(j=0;j<m;j++) printf("%3d",a[i][j]); printf("\n"); } printf("\n"); for(i=0;i<n;i++) { for(j=0;j<m-1;j++) printf("%3d",b[i][j]); printf("\n"); } getch(); return 0; } // ïîèñê ñòðîêè Г± ìèГ*ГЁГ¬Г*ëüГ*ûì ýëåìåГ*òîì int minf(int** y,int n, int m) { int i,j,k,k1=0; k=y[0][0]; for(i=0;i<n;i++) for(j=0;j<m;j++) if(y[i][j]<k) {k=y[i][j]; k1=i;} return(k1); } // ïîèñê ñòîëáöГ* Г± Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*ûì ýëåèåГ*òîì int maxf(int** y,int n, int m) { int i,j,k,k1=0; k=y[0][0]; for(i=0;i<n;i++) for(j=0;j<m;j++) if(y[i][j]>k) {k=y[i][j]; k1=j;} return(k1); }
Объяснение кода листинга программы
В этом коде представлена реализация удаления строки и столбца из матрицы с использованием других матриц. Список действий:
- Ввод размеров матрицы
n
иm
с помощью функцииscanf()
. - Создание матрицы
a
размеромn-1
наm
и матрицыb
размеромn
наm-1
, заполненных нулями. - Создание двумерного массива
x
размеромn
наm
, заполненного значениями из матрицыa
. - Вывод содержимого матрицы
x
с помощью циклаfor
. - Вычисление минимального и максимального элементов матрицы
x
с помощью функцийminf()
иmaxf()
. - Заполнение матрицы
a
значениями из матрицыx
с помощью циклаfor
, где условиеif
проверяет, что номер строки или столбца меньше или равен минимальному значению. - Заполнение матрицы
b
значениями из матрицыx
с помощью циклаfor
, где условиеif
проверяет, что номер строки или столбца меньше или равен максимальному значению. - Вывод содержимого матрицы
a
с помощью циклаfor
. - Вывод содержимого матрицы
b
с помощью циклаfor
. - Вызов функции
getch()
для приостановки выполнения программы до нажатия клавиши. - Возврат значения
0
в функциюmain()
, что означает успешное выполнение программы. Функцииminf()
иmaxf()
используются для поиска минимального и максимального элементов в матрице. Они работают по принципу перебора всех элементов матрицы и сравнения их с текущим минимальным или максимальным значением. Если найденное значение меньше или больше текущего минимального или максимального значения, оно становится новым минимальным или максимальным значением, а его индексы сохраняются в отдельных переменныхk1
. Примечание: В данном коде не учтены случаи выхода за границы матрицы, что может привести к ошибкам выполнения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д