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

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

Объясните пожалуйста про двумерные массивы. Препод ничего адекватно нам не объясняет поэтому приходиться учить язык самому, по интернету. Всё что я понял, что двумерные массивы держат в себе большое кол-во переменных и состоят из строк и столбцов. Если значение массивы даны, то я могу вывести любой элемент массивы и с ним уже работать, но на этом моё понимание в массивах закончилось. Прочёл приличное кол-во материала, но для понимания не хватает наглядного примера. Объясните пожалуйста "Обычным языком" как , к примеру, решать такую задачу : "Дана матрица размером NxM. Упорядочить их строки по возрастанию их первых элементов" . Буду очень благодарен. Уже несколько дней разбираю массивы, только с ними возникла проблема.

Код к задаче: «Объяснить задание: дана матрица размером NxM. Упорядочить их строки по возрастанию их первых элементов - C (СИ)»

textual
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <time.h>
 
int main()
{
 
int** a;
int n;
int m;
 
int i;
int j;
int k;
 
int tmp;
 
n = 10;
m = 20;
 
srand(time(0));
 
a = (int**) malloc(n*sizeof(int*));
 
for(i=0;i<n;i++)
a[i] = (int*) malloc(m*sizeof(int));;
 
for(i=0;i<n;i++)
for(j=0;j<m;j++)
a[i][j] = rand()%9;
 
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d ", a[i][j]);
printf("\n");
}
 
for(i=0;i<n;i++)
{
for(k=i+1;k<n; k++)
{
if (a[i][0] > a[k][0])
{
for(j=0;j<m;j++)
{
tmp = a[i][j];
a[i][j] = a[k][j];
a[k][j] = tmp;
}
}
}
}
 
printf("\n");
 
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d ", a[i][j]);
printf("\n");
}
 
for(i=0;i<n;i++)
free(a[i]);
 
free(a);
 
return 0;
 
}

9   голосов, оценка 3.778 из 5


СОХРАНИТЬ ССЫЛКУ