
C/C++
Сортировка матрицы по первым элементам
Нужна реализация программы


Вот пример программы на C++, сортировка во всех случаях пузырьковая:
#include "iostream"
#include "iomanip"
#include "cstdlib"
#include "ctime"
using namespace std;
void print_array(int **a, int strings, int columns)
{
cout << endl;
int i, j;
for (i = 0; i < strings; i++)
{
for (j = 0; j < columns; j++)
cout << setw(3) << a[i][j];
cout << endl;
}
}
int main()
{
char word;
double s = 0;
int i, j, k, l, m, n;
cout << "n m: ";
cin >> n >> m;
int **array = new int *[n];
for (i = 0; i < n; i++) array[i] = new int [m];
srand(time(nullptr));
for (i = 0; i < n; i++) for (j = 0; j < m; j++)
array[i][j]= rand() % 100;
print_array(array, n, m);
for (i = 0; i < n; i++)
for (j = 1; j < m; j++)
for (k = m - 1; k >= j; k--)
if (array[i][k - 1] > array[i][k])
{
l = array[i][k - 1];
array[i][k - 1] = array[i][k];
array[i][k] = l;
}
print_array(array, n, m);
for (i = 1; i < n; i++)
for (j = n - 1; j >= i; j--)
if (array[j - 1][0] > array[j][0])
for (k = 0; k < m; k++)
{
l = array[j - 1][k];
array[j - 1][k] = array[j][k];
array[j][k]= l;
}
print_array(array, n, m);
cin >> word;
}
Только в задании надо было всё чётче прописать как сортировать строки. А то может получиться как на фото внизу. Если соседние строки после сортировки имеют одинаковые первые элементы, то дальнейшую их сортировку программа не выполняет, но можно сделать и это.

#include "iostream"
#include "iomanip"
#include "cstdlib"
#include "ctime"
using namespace std;
void print_array(int **a, int strings, int columns)
{
cout << endl;
int i, j;
for (i = 0; i < strings; i++)
{
for (j = 0; j < columns; j++)
cout << setw(3) << a[i][j];
cout << endl;
}
}
int main()
{
char word;
double s = 0;
int i, j, k, l, m, n;
cout << "n m: ";
cin >> n >> m;
int **array = new int *[n];
for (i = 0; i < n; i++) array[i] = new int [m];
srand(time(nullptr));
for (i = 0; i < n; i++) for (j = 0; j < m; j++)
array[i][j]= rand() % 100;
print_array(array, n, m);
for (i = 0; i < n; i++)
for (j = 1; j < m; j++)
for (k = m - 1; k >= j; k--)
if (array[i][k - 1] > array[i][k])
{
l = array[i][k - 1];
array[i][k - 1] = array[i][k];
array[i][k] = l;
}
print_array(array, n, m);
for (i = 1; i < n; i++)
for (j = n - 1; j >= i; j--)
if (array[j - 1][0] > array[j][0])
for (k = 0; k < m; k++)
{
l = array[j - 1][k];
array[j - 1][k] = array[j][k];
array[j][k]= l;
}
print_array(array, n, m);
cin >> word;
}
Только в задании надо было всё чётче прописать как сортировать строки. А то может получиться как на фото внизу. Если соседние строки после сортировки имеют одинаковые первые элементы, то дальнейшую их сортировку программа не выполняет, но можно сделать и это.

Константин Макулов
один минус - при промежуточном выделении памяти может получиться сбой и проверки на NULL нет в принципе, а на УЖЕ выделенную память delete [ ] никак не подходит ((((
Константин Макулов
тем более товарищ даже не уточнил с или с++..Странно да?
Константин Макулов
Какой бы ни был корифей местный это утверждение ещё никто не опроверг. Читайте американскую литературу по си и си++..Там про утечки памяти сказано хорошо
c или с++ ?
Агей Черданцев
https://pastebin.com/Mp2VdffT
это Си с динамикой и ПРАВИЛЬНЫМ освобождением памяти при аварийных ситуациях
это Си с динамикой и ПРАВИЛЬНЫМ освобождением памяти при аварийных ситуациях
Похожие вопросы
- С++. Упорядочить строки массива A в порядке убывания сумм цифр первого элемента каждой строки.
- Найти максимальный элементы в строке матрицы
- Написать программу, которая сравнивает число перестановок элементов при использовании сортировки «пузырьком» (усовершенс
- Сформировать матрицу B(M, N) элементами которой являются случайные числа, равномерно распределенные в интервале (-5, 7
- Код работает некорректно. Язык Си. Нахождение максимального отрицательного элемента матрицы и замена его числом.
- Работа с матрицами. Нужно найти сумму элементов каждой строки. Помогите пожалуйста ????????
- Элементы Матрицы C++
- Сортировка элементов массива методом Шелла
- Составьте программу удаления столбца, содержащего максимальный элемент матрицы A[N][N] НА ЯЗЫКЕ СИ
- Дана матрица nxn, вычислить суммы диагональных элементов( главной и побочной ) отдельно, но в одной функции на языке си.