Упорядочить строки целочисленной прямоугольной матрицы - C (СИ) (79774)
Формулировка задачи:
Здраствуйте!
помогите пожалуста решить задачку на С.
упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых элементов в каждой строке.
не могу никак сделать!=(((
Решение задачи: «Упорядочить строки целочисленной прямоугольной матрицы»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int kol_elem(int ** mas, int n, int i) { int j, temp, max=1, col, fl; for(j=0; j<n-1; j++) { col=1; fl=1; for(temp=0; temp<j && fl; temp++) if(mas[i][j]==mas[i][temp]) fl=0; if(fl) for(temp=j+1; temp<n; temp++) if(mas[i][j]==mas[i][temp]) col++; if(col>max) max=col; } return max; } int main () { int **mas, n, i,j, temp, i1; printf("Razmernost matrici n= "); scanf("%d", &n); mas = (int **)malloc (n * sizeof (int *)); for (i = 0; i < n; i++) mas [i] = (int *)malloc (n * sizeof (int)); for(i=0;i<n;i++) for(j=0;j<n;j++) { printf("[%d][%d]=",i,j); scanf("%d",&mas[i][j]); } printf("Ishodnay matrica\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%d ",mas[i][j]); printf("\n"); } for(i=0; i<n-1; i++) for(j=0; j<n-i-1; j++) if(kol_elem(mas, n, j)>kol_elem(mas, n, j+1)) for(i1=0; i1<n; i1++) { temp=mas[j][i1]; mas[j][i1]=mas[j+1][i1]; mas[j+1][i1]=temp; } printf("Poluchennay matrica:\n"); for(i=0; i<n; i++) { for(j=0; j<n; j++) printf("%d ", mas[i][j]); printf("\n"); } return 0; }
Объяснение кода листинга программы
В этом коде реализована сортировка строк целочисленной прямоугольной матрицы. Список действий:
- Ввод размера матрицы (n) с помощью функции scanf.
- Выделение памяти под матрицу (массив указателей на массивы) с помощью функции malloc.
- Ввод значений матрицы с помощью функции scanf.
- Вывод исходной матрицы на экран с помощью цикла for и функции printf.
- Сортировка строк матрицы с помощью функции kol_elem и двух вложенных циклов for. Функция kol_elem считает количество элементов в строке. Если это количество больше, чем в следующей строке, то строки меняются местами с помощью функции swap.
- Вывод отсортированной матрицы на экран с помощью цикла for и функции printf.
- Освобождение памяти, выделенной под матрицу, с помощью цикла for и функции free.
- Возврат 0, чтобы указать, что программа успешно завершилась. Примечание: В данном коде не обрабатывается ошибка, когда размер матрицы вводится некорректно (например, отрицательное число).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д