Упорядочить строки целочисленной прямоугольной матрицы - 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; 
}

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

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

  1. Ввод размера матрицы (n) с помощью функции scanf.
  2. Выделение памяти под матрицу (массив указателей на массивы) с помощью функции malloc.
  3. Ввод значений матрицы с помощью функции scanf.
  4. Вывод исходной матрицы на экран с помощью цикла for и функции printf.
  5. Сортировка строк матрицы с помощью функции kol_elem и двух вложенных циклов for. Функция kol_elem считает количество элементов в строке. Если это количество больше, чем в следующей строке, то строки меняются местами с помощью функции swap.
  6. Вывод отсортированной матрицы на экран с помощью цикла for и функции printf.
  7. Освобождение памяти, выделенной под матрицу, с помощью цикла for и функции free.
  8. Возврат 0, чтобы указать, что программа успешно завершилась. Примечание: В данном коде не обрабатывается ошибка, когда размер матрицы вводится некорректно (например, отрицательное число).

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


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

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

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