Упорядочить строки матрицы по возрастанию количества одинаковых элементов в строке - C (СИ)

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

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

Дана целочисленная матрица A[i j]. Получить целочисленную матрицу B[i j] путём упорядовачиния строк исходной матрицы по возрастанию количества одинаковых элементов в каждой сторке.

Решение задачи: «Упорядочить строки матрицы по возрастанию количества одинаковых элементов в строке»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
unsigned short i;
unsigned short j;
 
unsigned int Maximum_Quantity_Of_repetitions(unsigned int** A, unsigned short k, unsigned int n)
{
    unsigned short f,Count = 1,Count1;
    j=0;
    for(; j< n; j++)
    {
        Count1=0;
        f = j+1;
        for(; f<n; f++)
        {
            if(j==0)
            {
                if(A[k][j]==A[k][f])
                    Count++;
            }
            else
                if(A[k][j]==A[k][f])
                    Count1++;
 
        }
        if(Count1>Count)
            Count = Count1;
    }
    return Count;
}
 
void Print_Arr(unsigned int** A, unsigned int m, unsigned int n)
{
    i=0;
    for(; i<m; i++)
    {
        for(j=0; j<n; j++)
        {
            if(A[i][j]<10)
                printf("%d %s",A[i][j],"   ");
            else   if(A[i][j]<100)
                printf("%d %s",A[i][j],"  ");
            else   if(A[i][j]>99)
                printf("%d %s",A[i][j]," ");
        }
        printf(" \n");
    }
}
 
void Matrix_Processing(unsigned int** B, unsigned int m, unsigned int n)
{
 
    unsigned short k,h,Swap;
    for(  i=0; i<m; i++)
    {
 
        for(k=0; k<m; k++)
        {
            if(Maximum_Quantity_Of_repetitions(B,i,n) < Maximum_Quantity_Of_repetitions(B,k,n))
            {
                for(h=0;h<n;h++)
                {
                    Swap = B[k][h];
                    B[k][h] = B[i][h];
                    B[i][h] = Swap;
                }
            }
        }
    }
}
 
int main()
{
    unsigned int m,n;
 
 
    printf("%s","Enter number of lines: ");
    scanf("%u",&m);
 
    unsigned int** A = (unsigned int**) malloc(m * sizeof(unsigned int*));
    unsigned int** B = (unsigned int**) malloc(m * sizeof(unsigned int*));
 
    printf("%s","Enter number of columns: ");
    scanf("%u",&n);
 
    printf("%s","Enter matrix elements: \n");
 
    for(  i=0; i<m; i++)
    {
        A[i] = (unsigned int*) malloc(n * sizeof(unsigned int));
        B[i] = (unsigned int*) malloc(n * sizeof(unsigned int));
        for(j=0; j<n; j++)
        {
            printf("%s %u %s %u %s","A[",i,"][",j,"] = ");
            scanf("%d",&(A[i][j]));
            B[i][j] =  A[i][j];
        }
    }
 
    printf("%s","\nThe Entered matrix looks like: \n");
    Print_Arr(A, m, n);
 
    Matrix_Processing(B, m, n);
 
    printf("%s","\nThe recieved matrix B looks like: \n");
    Print_Arr(B, m, n);
 
    return 0;
}

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


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

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

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