Продублировать 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-й строки. Код также содержит фрагменты, которые освобождают память, выделенную под матрицу, но в данном случае они отключены. Пожалуйста, обратите внимание, что в данном коде не обрабатывается ошибка, когда матрица не может быть выделена.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д