0 / 0 / 0
Регистрация: 18.11.2021
Сообщений: 30
1

Упорядочить (переставить) строки матрицы по убыванию значений наибольших элементов строк

04.04.2022, 14:00. Показов 217. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана действительная матрица размером MxN. Упорядочить (переставить)
строки матрицы по убыванию значений наибольших элементов строк.
Используйте алгоритм простого выбора.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2022, 14:00
Ответы с готовыми решениями:

Упорядочить столбцы матрицы по убыванию значений наибольших элементов столбцов
Дана действ. матрица размера m*n, упорядочить столбцы матрицы по убыванию значений наибольших...

Упорядочить строки матрицы по не убыванию наибольших элементов
Дана вещественная матрица размером 3 x 4. Упорядочить ее строки по не убыванию наибольших элементов...

Упорядочить строки матрицы по убыванию наибольших элементов
Дана вещественная матрица X размера m n. Упорядочить ее строки по убыванию их наибольших элементов....

Упорядочить строки матрицы по убыванию их наибольших элементов
В общем задача такая, матрицы. Дана вещественная матрица X размера m n. Упорядочить ее строки по...

1
236 / 50 / 37
Регистрация: 24.01.2022
Сообщений: 137
04.04.2022, 15:10 2
Corinthian, вариант решения:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <iostream>
#include <iomanip>
 
double** create_zero_matrix(size_t m, size_t n) {
    double** zero_matrix = new double*[m];
    for (size_t i = 0; i < m; ++i) {
        zero_matrix[i] = new double[n];
        for (size_t j = 0; j < n; ++j) {
            zero_matrix[i][j] = 0;
        }
    } return zero_matrix;
}
 
void fill_matrix(double** matrix, size_t m, size_t n) {
    if (matrix == nullptr) return;
    for (size_t i = 0; i < m; ++i) {
        for (size_t j = 0; j < n; ++j) {
            matrix[i][j] = (std::rand() % 1000) / 10.0;
            //std::cin >> matrix[i][j];
        }
    }
}
 
void write_matrix(double** matrix, size_t m, size_t n) {
    if (matrix == nullptr) return;
    for (size_t i = 0; i < m; ++i) {
        for (size_t j = 0; j < n; ++j) {
            std::cout << matrix[i][j] << " ";
        } std::cout << std::endl;
    }
}
 
double max_row_elem_of_matrix(double** matrix, size_t row, size_t n) {
    if (n == 0) return 0.0;
    if (matrix == nullptr) return 0.0;
 
    double max_row_elem = matrix[row][0];
    for (size_t j = 0; j < n; ++j) {
        if (matrix[row][j] > max_row_elem) {
            max_row_elem = matrix[row][j];
        }
    } return max_row_elem;
}
 
void bb_sort_matrix_by_max_row_elem(double** matrix, size_t m, size_t n) {
    if (m == 1) return;
    if (matrix == nullptr) return;
 
    for (size_t i = 0; i < m - 1; ++i) {
        for (size_t j = 0; j < m - i - 1; ++j) {
            double max_row_jl = max_row_elem_of_matrix(matrix, j + 0, n);
            double max_row_jr = max_row_elem_of_matrix(matrix, j + 1, n);
 
            if (max_row_jl < max_row_jr) {
                double *tmp_row = matrix[j];
                matrix[j] = matrix[j + 1];
                matrix[j + 1] = tmp_row;
            }
        }
    }
}
 
void remove_matrix(double** matrix, size_t m) {
    if (matrix == nullptr) return;
    for (size_t i = 0; i < m; ++i) {
        delete [] matrix[i];
    } delete [] matrix;
}
 
int main() {
    size_t m = 0;
    size_t n = 0;
 
    std::cout << "enter rows: "; std::cin >> m;
    std::cout << "enter cols: "; std::cin >> n;
 
    double** matrix = create_zero_matrix(m, n);
    std::cout << "zero matrix: " << std::endl;
    write_matrix(matrix, m, n);
 
    //std::cout << "enter matrix: " << std::endl;
    fill_matrix(matrix, m, n);
 
    std::cout << "entered matrix: " << std::endl;
    write_matrix(matrix, m, n);
 
    bb_sort_matrix_by_max_row_elem(matrix, m, n);
 
    std::cout << "sorted matrix: " << std::endl;
    write_matrix(matrix, m, n);
 
    remove_matrix(matrix, m);
    return 0;
}
Код
enter rows: 4
enter cols: 9
zero matrix:
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
entered matrix:
4.1 46.7 33.4 50 16.9 72.4 47.8 35.8 96.2
46.4 70.5 14.5 28.1 82.7 96.1 49.1 99.5 94.2
82.7 43.6 39.1 60.4 90.2 15.3 29.2 38.2 42.1
71.6 71.8 89.5 44.7 72.6 77.1 53.8 86.9 91.2
sorted matrix:
46.4 70.5 14.5 28.1 82.7 96.1 49.1 99.5 94.2
4.1 46.7 33.4 50 16.9 72.4 47.8 35.8 96.2
71.6 71.8 89.5 44.7 72.6 77.1 53.8 86.9 91.2
82.7 43.6 39.1 60.4 90.2 15.3 29.2 38.2 42.1
Для ввода данных из консоли необходимо раскомментировать "пару" строк.
1
04.04.2022, 15:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2022, 15:10
Помогаю со студенческими работами здесь

Упорядочить строки матрицы по убыванию её наибольших элементов
Дана вещественная матрица размером m на n. Необходимо упорядочить её строки по убыванию её...

Упорядочить(переставить) строки матрицы по убыванию значений наибольших элементов строк
Дана действительная матрица МхN . Упорядочить(переставить) строки матрицы по убыванию значений...

Упорядочить (переставить) строки матрицы по невозрастанию значений наибольших элементов строк
Дана действительная матрица размерности n * m. Упорядочить (переставить) строки матрицы по...

Упорядочить строки матрицы по убыванию значений наибольших элементов строк
Дана действительная марица размера n*m, упорядочить (переставить) строки матрицы по убыванию...

Упорядочить (переставить) строки матрицы по убыванию значений последних элементов строк
Дана действительная матрица размером M N. Упорядочить (переставить) строки матрицы по УБЫВАНИЮ...

Упорядочить (переставить) строки матрицы по убыванию сумм элементов строк
Дана действительная матрица размером MxN. Упорядочить (переставить) строки матрицы по убыванию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru