Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+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); 
} 
Удаленный ответ Ответ удалён