Вывести строки массива по убыванию максимальных элементов строк массива - C (СИ)
Формулировка задачи:
C дан массив А [7.7] вывести строки массива по убыванию максимальных элементов строк массива . Программу и блок схему подалуйста
Решение задачи: «Вывести строки массива по убыванию максимальных элементов строк массива»
textual
Листинг программы
#include <stdio.h>
#define N 7
int MaxInRow(int (*a)[N],int row)
{
int i,maxx;
maxx=a[row][0];
for(i=1; i<N; i++)
{
if(a[row][i]>maxx)
maxx=a[row][i];
}
return maxx;
}
void sort_arr(int (*a)[2])
{
int i,j,buf;
for(i=0; i<N; i++)
{
for(j=i; j<N; j++)
{
if( a[i][1] > a[j][1] )
{
buf=a[j][1]; //value
a[j][1]=a[i][1];
a[i][1]=buf;
buf=a[j][0]; //index
a[j][0]= a[i][0];
a[i][0]=buf;
}
}
}
}
int main()
{
int arr[N][N]= { {1,2,3,4,5,6,7}, //max 7
{8,9,10,-2,0,1}, //max 10
{9,4,6,2,4,-3,0}, //max 9
{0,-4,5,6,7,8,11}, //max 11
{-5,6,7,12,9,10,11}, //max 12
{3,5,0,4,1,5,8}, //max 8
{3,5,6,0,0,4,5}
}; //max 6
int max_row[N][2];
int i,j;
for(i=0; i<N; i++)
{
max_row[i][0]=i;
max_row[i][1]=MaxInRow(arr,i); //нашли максимумы в каждой строке и записали в массив
// в массиве две колонки Индекс строки и Максимум строки
}
sort_arr(max_row); // отсортировали массив
//вывод
for(i=0; i<N; i++)
{
printf("Row index: %2d |\t",max_row[i][0]);
for(j=0; j<N; j++)
{
printf("%4d",arr[max_row[i][0]][j]); // индекс строки из отсортированного массива
}
printf("\n");
}
return 0;
}
Объяснение кода листинга программы
В этом коде реализованы две функции:
- *MaxInRow(int (a)[N],int row)** - эта функция находит максимальное значение в строке массива. Ввод: массив a и номер строки row. Вывод: максимальное значение в строке.
- *sort_arr(int (a)[2])** - эта функция сортирует массив a по убыванию максимальных значений строк. Ввод: массив a. Вывод: отсортированный массив. В функции main создается массив arr, заполненный данными. Затем создается массив max_row, в котором будут храниться индекс строки и максимальное значение строки. Затем в цикле для каждой строки массива arr вызывается функция MaxInRow, чтобы найти максимальное значение строки, и это значение записывается в соответствующий элемент массива max_row. После этого вызывается функция sort_arr, чтобы отсортировать массив max_row по убыванию максимальных значений строк. Наконец, в цикле по всем строкам массива max_row выводится на экран индекс строки и все значения этой строки из массива arr. Таким образом, данный код выводит строки массива по убыванию максимальных элементов строк.