Продублировать 2 раза столбец матрицы, содержащий ее минимальный элемент - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дана матрица размера M*N.Продублировать 2 раза столбец матрицы, содержащий ее минимальный элемент.

Решение задачи: «Продублировать 2 раза столбец матрицы, содержащий ее минимальный элемент»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. const int n=3; // strok
  5. const int m=5; // stolbcov
  6. int dubl(int **mas,int min,int nom)
  7. {
  8.     int **mas1;
  9.     mas1=(int**)calloc(n,sizeof(int*));
  10.     for(int i=0;i<(m+2);i++)
  11.     {
  12.     mas1[i]=(int*)calloc((m+2),sizeof(int));
  13.     }
  14.     if(mas==NULL)
  15.     {
  16.         puts("error");
  17.         return -1;
  18.     }
  19.     for(int i=0;i<n;i++)
  20.     {
  21.         for(int j=0;j<(m+2);j++)
  22.         {
  23.             if(j<m)
  24.             {
  25.                 mas1[i][j]=mas[i][j];
  26.             }
  27.             else if(j>=m)
  28.             {
  29.                 mas1[i][j]=mas[i][nom];
  30.             }
  31.         }
  32.     }
  33.     puts("Posle \n");
  34. for(int i=0;i<n;i++)
  35.     {
  36.         for(int j=0;j<(m+2);j++)
  37.         {
  38.             printf("%d ",mas1[i][j]);
  39.         }
  40.         puts("\n");
  41.     }
  42. /*for(int i=0;i<(m+2);i++)
  43.     {
  44.         free(mas1[i]);
  45.     }
  46.     free(mas1);*/
  47.  
  48. }
  49. void minel(int **mas)
  50. {
  51.     int min=mas[0][0],nom=0;
  52.     for(int i=0;i<n;i++)
  53.     {
  54.         for(int j=0;j<m;j++)
  55.         {
  56.             if(min>mas[i][j])
  57.             {
  58.                 min=mas[i][j];
  59.                 nom=j;
  60.             }
  61.         }
  62.     }
  63.     dubl(mas,min,nom);
  64. }
  65. int main()
  66. {
  67.     srand(time(NULL));
  68.     int **mas;
  69.     mas=(int**)calloc(n,sizeof(int*));
  70.     for(int i=0;i<m;i++)
  71.     {
  72.     mas[i]=(int*)calloc(m,sizeof(int));
  73.     }
  74.     if(mas==NULL)
  75.     {
  76.         puts("error");
  77.         return -1;
  78.     }
  79.     for(int i=0;i<n;i++)
  80.     {
  81.         for(int j=0;j<m;j++)
  82.         {
  83.             mas[i][j]=rand()%5+1;
  84.         }
  85.     }
  86.     puts("Do \n");
  87.     for(int i=0;i<n;i++)
  88.     {
  89.         for(int j=0;j<m;j++)
  90.         {
  91.             printf("%d ",mas[i][j]);
  92.         }
  93.         puts("\n");
  94.     }
  95.     minel(mas);
  96. /*  for(int i=0;i<m;i++)
  97.     {
  98.         free(mas[i]);
  99.     }
  100.     free(mas); */
  101.     return 0;
  102. }

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

В этом коде есть две основные функции: dubl и minel. Функция dubl принимает на вход матрицу (представленную двумерным массивом) и минимальный элемент этой матрицы. Она дублирует этот элемент два раза, вставив его в конец строки. Код для этого начинается с 26-й строки. Функция minel находит минимальный элемент в матрице и его позицию (номер столбца). Затем она вызывает функцию dubl, передавая ей этот минимальный элемент и его позицию. Код для этого начинается с 41-й строки. В функции main создается случайная матрица 3x5, выводится на экран, затем вызывается функция minel. Код для этого начинается с 73-й строки. Код также содержит фрагменты, которые освобождают память, выделенную под матрицу, но в данном случае они отключены. Пожалуйста, обратите внимание, что в данном коде не обрабатывается ошибка, когда матрица не может быть выделена.

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


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

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

11   голосов , оценка 3.455 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы