Сортировка элементов динамической матрицы
Дано: n, m, динамическая матрица а [n][m]. Упорядочить элементы двух столбцов матрицы
по убыванию, номера столбцов ввести с клавиатуры.
C/C++
Написать программу на С++
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <random>
using namespace std;
unsigned buffer(const char* msg) {
unsigned value;
do {
cout << msg;
cin >> value;
} while (value < 1U);
return value;
}
void usort(int** mx, size_t n, size_t m, size_t k) {
if (k >= m) return;
auto tmp = new int[n];
for (auto i = 0U; i < n; ++i) tmp[i] = mx[i][k];
sort(tmp, tmp + n, greater<>());
for (auto i = 0U; i < n; ++i) mx[i][k] = tmp[i];
delete[] tmp;
}
int main() {
system("chcp 1251 > nul");
auto n = buffer("Количество строк: ");
auto m = buffer("Количество столбцов: ");
puts("");
auto matrix = new int* [n];
for (auto i = 0U; i < n; ++i) {
matrix[i] = new int[m];
}
uniform_int_distribution<> uid(10, 99);
mt19937 gen{ random_device()() };
auto rand = [&] {
return uid(gen);
};
for (auto i = 0U; i < n; ++i) {
generate(matrix[i], matrix[i] + m, rand);
}
auto show = [](int x) {
cout << setw(4) << x;
};
for (auto i = 0U; i < n; ++i) {
for_each(matrix[i], matrix[i] + m, show);
puts("");
}
puts("");
cout << "Введите номер первого столбца для сортировки: ";
size_t a;
cin >> a;
usort(matrix, n, m, --a);
cout << "Введите номер первого столбца для сортировки: ";
size_t b;
cin >> b;
puts("");
usort(matrix, n, m, --b);
for (auto i = 0U; i < n; ++i) {
for_each(matrix[i], matrix[i] + m, show);
puts("");
}
for (auto i = 0U; i < n; ++i) {
delete[] matrix[i];
}
delete[] matrix;
system("pause > nul");
}
#include <iostream>
#include <iomanip>
#include <random>
using namespace std;
unsigned buffer(const char* msg) {
unsigned value;
do {
cout << msg;
cin >> value;
} while (value < 1U);
return value;
}
void usort(int** mx, size_t n, size_t m, size_t k) {
if (k >= m) return;
auto tmp = new int[n];
for (auto i = 0U; i < n; ++i) tmp[i] = mx[i][k];
sort(tmp, tmp + n, greater<>());
for (auto i = 0U; i < n; ++i) mx[i][k] = tmp[i];
delete[] tmp;
}
int main() {
system("chcp 1251 > nul");
auto n = buffer("Количество строк: ");
auto m = buffer("Количество столбцов: ");
puts("");
auto matrix = new int* [n];
for (auto i = 0U; i < n; ++i) {
matrix[i] = new int[m];
}
uniform_int_distribution<> uid(10, 99);
mt19937 gen{ random_device()() };
auto rand = [&] {
return uid(gen);
};
for (auto i = 0U; i < n; ++i) {
generate(matrix[i], matrix[i] + m, rand);
}
auto show = [](int x) {
cout << setw(4) << x;
};
for (auto i = 0U; i < n; ++i) {
for_each(matrix[i], matrix[i] + m, show);
puts("");
}
puts("");
cout << "Введите номер первого столбца для сортировки: ";
size_t a;
cin >> a;
usort(matrix, n, m, --a);
cout << "Введите номер первого столбца для сортировки: ";
size_t b;
cin >> b;
puts("");
usort(matrix, n, m, --b);
for (auto i = 0U; i < n; ++i) {
for_each(matrix[i], matrix[i] + m, show);
puts("");
}
for (auto i = 0U; i < n; ++i) {
delete[] matrix[i];
}
delete[] matrix;
system("pause > nul");
}
Похожие вопросы
- Написать программу на языке Си
- Написать программы на СИ
- Некорректно работает написанная программа
- Помогите написать программу на С++
- Написать программу в С++ (нахождение площади трапеции)
- В LINUX OS Написать программу, которая из командной строки получает целое число N и некоторый текст “Text”.
- Помогите написать программу на С
- Помогите написать программу на C++
- Помогите написать программу на с++
- Помогите написать программу на с++