нужно изменить сортировку по первому столбцу на сортировку по первой строке в матрице, но как?

Задание - "Реализовать функцию, которая будет изменять последовательность столбцов матрицы так, чтобы элементы их первой строки были отсортированы по возрастанию." Давно делалось и всё забылось. По ошибке получилось что код сортирует первый столбик по возрастанию, а не первую строку, ну и все остальные значения привязаны к своей строке. Нужно сделать сортировку по первой строке, менял разные значения, но никак не получается. Ощущение что чуть-чуть поменять цифры, переменные нужно, но где я не могу понять.. хелп плз..

#include <stdio.h>
#include <conio.h>
 
int main()
{
 int i,j;
 int m,n;
int x,y;
printf("\nВведите количество строк \n");
 scanf("%d",&m);
 printf("\nВведите количество столбцов \n");
  scanf("%d",&n);
  float A[m][n];
    printf("\nВведите матрицу %d x %d elements \n",m,n);
    for (i=0; i<m; i++)
    {
        printf("\n Строка %d : \n",i+1);
            for (j=0; j<n; j++)
        {
            printf("Строка [%d][%d]",i+1,j+1);
            scanf("%f", &A[i][j]);
        }
    }
    printf("\nМатрица: \n");
    for(i=0; i<m; i++)
    {
        for(j=0; j<n; j++)
        {
            printf("%f\t",A[i][j]);
        }
    printf("\n");
    }
for(y=0; y<m; y++)
    {
        for (i=0; i<(m-1); i++)
        {
            if(A[i][0]>A[i+1][0])
            {
                for(j=0; j<n; j++)
                {
                    x=A[i][j];
                    A[i][j]=A[i+1][j];
                    A[i+1][j]=x;
                }
            }
        }
    }
    printf("\n");
 
  printf("\nСортированная матрица: \n");
    for(i=0; i<m; i++)
    {
        for(j=0; j<n; j++)
        {
            printf("%f\t",A[i][j]);
        }
            printf("\n");
    }
printf("\n");
}

Ответы (1 шт):

Автор решения: MBo

У вас же количество столбцов n, и внешний цикла сортировки должен до n идти, а вот внутренние обмены столбцов между собой - до числа строк m

for(y=0; y<n; y++)
    {
        for (i=0; i<(n-1); i++)
        {
            if(A[i][0]>A[i+1][0])
            {
                for(j=0; j<m; j++)
                { 
                  x=A[j][i];
                  A[j][i]=A[j][i+1]
                  A[j][i+1]=x;

А чтобы такого избегать, называйте переменные осмысленно - rows или rowcount и т.д.

→ Ссылка