Упорядочить строки матрицы по возрастанию количества одинаковых элементов в строке - 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;
}