


Программирование
+3Прога на С++
Составить программу решения задачи. Все числовые значения должны вводиться в процессе исполнения программы. Размерность (единицы измерения) исходных значений должна быть сохранена.
Задать двумерный массив размерности M×N целых случайных чи-сел из интервала (-10; 10). Предусмотреть автоматический и ручной способ ввода элементов массива. Вывести на экран в виде таблицы исходный массив и преобразованный с соответствующими заголовками.
Расставить столбцы таким образом, чтобы элементы первой строки были упоря-дочены по убыванию.
По дате
По рейтингу
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
#include <algorithm>
#include <iomanip>
#include <iostream>
#include <random>
#include <vector>
using namespace std;
using matrix_t = vector<vector<int>>;
void fill_random(matrix_t& matrix, int a, int b) {
if (a > b) swap(a, b);
uniform_int_distribution<> uid(a, b);
mt19937 gen{ random_device()() };
for (auto& row : matrix) for (auto& x : row) x = uid(gen);
}
// Предусмотрена возможность ввода матрицы с клавиатуры
void fill_keyboard(matrix_t& matrix) {
for (auto& row : matrix) for (auto& x : row) cin >> x;
}
void show(const matrix_t& matrix, const streamsize w) {
for (const auto& row : matrix) {
for (auto x : row) cout << setw(w) << x;
cout.put('\n');
}
cout.put('\n');
}
void column_swap(matrix_t& matrix, size_t i, size_t j) {
for (auto& row : matrix) {
swap(row[i], row[j]);
}
}
void descending_columns_sort(matrix_t& matrix, const size_t r = 0) {
const auto n = matrix[r].size();
for (size_t i = 0; i < n - 1; ++i) {
size_t k = i;
for (size_t j = i + 1; j < n; ++j) {
if (matrix[r][j] > matrix[r][k]) {
k = j;
}
}
column_swap(matrix, i, k);
}
}
int main() {
cout << "M, N? ";
size_t m, n;
cin >> m >> n;
matrix_t matrix(m, vector<int>(n));
fill_random(matrix, -10, 10);
streamsize w = 5;
show(matrix, w);
descending_columns_sort(matrix);
show(matrix, w);
}