Удаление строки и столбца в матрице с использованием других матриц - 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);
}

Объяснение кода листинга программы

В этом коде представлена реализация удаления строки и столбца из матрицы с использованием других матриц. Список действий:

  1. Ввод размеров матрицы n и m с помощью функции scanf().
  2. Создание матрицы a размером n-1 на m и матрицы b размером n на m-1, заполненных нулями.
  3. Создание двумерного массива x размером n на m, заполненного значениями из матрицы a.
  4. Вывод содержимого матрицы x с помощью цикла for.
  5. Вычисление минимального и максимального элементов матрицы x с помощью функций minf() и maxf().
  6. Заполнение матрицы a значениями из матрицы x с помощью цикла for, где условие if проверяет, что номер строки или столбца меньше или равен минимальному значению.
  7. Заполнение матрицы b значениями из матрицы x с помощью цикла for, где условие if проверяет, что номер строки или столбца меньше или равен максимальному значению.
  8. Вывод содержимого матрицы a с помощью цикла for.
  9. Вывод содержимого матрицы b с помощью цикла for.
  10. Вызов функции getch() для приостановки выполнения программы до нажатия клавиши.
  11. Возврат значения 0 в функцию main(), что означает успешное выполнение программы. Функции minf() и maxf() используются для поиска минимального и максимального элементов в матрице. Они работают по принципу перебора всех элементов матрицы и сравнения их с текущим минимальным или максимальным значением. Если найденное значение меньше или больше текущего минимального или максимального значения, оно становится новым минимальным или максимальным значением, а его индексы сохраняются в отдельных переменных k1. Примечание: В данном коде не учтены случаи выхода за границы матрицы, что может привести к ошибкам выполнения программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы