Вывести строки массива по убыванию максимальных элементов строк массива - 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;
 
}

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

В этом коде реализованы две функции:

  1. *MaxInRow(int (a)[N],int row)** - эта функция находит максимальное значение в строке массива. Ввод: массив a и номер строки row. Вывод: максимальное значение в строке.
  2. *sort_arr(int (a)[2])** - эта функция сортирует массив a по убыванию максимальных значений строк. Ввод: массив a. Вывод: отсортированный массив. В функции main создается массив arr, заполненный данными. Затем создается массив max_row, в котором будут храниться индекс строки и максимальное значение строки. Затем в цикле для каждой строки массива arr вызывается функция MaxInRow, чтобы найти максимальное значение строки, и это значение записывается в соответствующий элемент массива max_row. После этого вызывается функция sort_arr, чтобы отсортировать массив max_row по убыванию максимальных значений строк. Наконец, в цикле по всем строкам массива max_row выводится на экран индекс строки и все значения этой строки из массива arr. Таким образом, данный код выводит строки массива по убыванию максимальных элементов строк.

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

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