Продублировать 2 раза столбец матрицы, содержащий ее минимальный элемент - C (СИ)
Формулировка задачи:
Решение задачи: «Продублировать 2 раза столбец матрицы, содержащий ее минимальный элемент»
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- const int n=3; // strok
- const int m=5; // stolbcov
- int dubl(int **mas,int min,int nom)
- {
- int **mas1;
- mas1=(int**)calloc(n,sizeof(int*));
- for(int i=0;i<(m+2);i++)
- {
- mas1[i]=(int*)calloc((m+2),sizeof(int));
- }
- if(mas==NULL)
- {
- puts("error");
- return -1;
- }
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<(m+2);j++)
- {
- if(j<m)
- {
- mas1[i][j]=mas[i][j];
- }
- else if(j>=m)
- {
- mas1[i][j]=mas[i][nom];
- }
- }
- }
- puts("Posle \n");
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<(m+2);j++)
- {
- printf("%d ",mas1[i][j]);
- }
- puts("\n");
- }
- /*for(int i=0;i<(m+2);i++)
- {
- free(mas1[i]);
- }
- free(mas1);*/
- }
- void minel(int **mas)
- {
- int min=mas[0][0],nom=0;
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<m;j++)
- {
- if(min>mas[i][j])
- {
- min=mas[i][j];
- nom=j;
- }
- }
- }
- dubl(mas,min,nom);
- }
- int main()
- {
- srand(time(NULL));
- int **mas;
- mas=(int**)calloc(n,sizeof(int*));
- for(int i=0;i<m;i++)
- {
- mas[i]=(int*)calloc(m,sizeof(int));
- }
- if(mas==NULL)
- {
- puts("error");
- return -1;
- }
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<m;j++)
- {
- mas[i][j]=rand()%5+1;
- }
- }
- puts("Do \n");
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<m;j++)
- {
- printf("%d ",mas[i][j]);
- }
- puts("\n");
- }
- minel(mas);
- /* for(int i=0;i<m;i++)
- {
- free(mas[i]);
- }
- free(mas); */
- return 0;
- }
Объяснение кода листинга программы
В этом коде есть две основные функции: dubl и minel. Функция dubl принимает на вход матрицу (представленную двумерным массивом) и минимальный элемент этой матрицы. Она дублирует этот элемент два раза, вставив его в конец строки. Код для этого начинается с 26-й строки. Функция minel находит минимальный элемент в матрице и его позицию (номер столбца). Затем она вызывает функцию dubl, передавая ей этот минимальный элемент и его позицию. Код для этого начинается с 41-й строки. В функции main создается случайная матрица 3x5, выводится на экран, затем вызывается функция minel. Код для этого начинается с 73-й строки. Код также содержит фрагменты, которые освобождают память, выделенную под матрицу, но в данном случае они отключены. Пожалуйста, обратите внимание, что в данном коде не обрабатывается ошибка, когда матрица не может быть выделена.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д