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

Отсортировать строки матрицы по убыванию максимальных элементов строк

25.11.2019, 11:49. Показов 5175. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста решить задание. Написать программу, которая создаёт динамический массив размерности A[n*n], элементы матрицы A - целые числа, заданные случайным образом

Изменить порядок строк матрицы: отсортировать строки матрицы по убыванию максимальных элементов строк. Использовать сортировку обменом
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2019, 11:49
Ответы с готовыми решениями:

Отсортировать строки матрицы в порядке невозрастания максимальных элементов строк
Дана прямоугольная матрица А. Отсортировать строки матрицы в порядке невозрастания максимальных...

Отсортировать строки матрицы по убыванию сумм элементов каждой строк
Помогите решить задачу. Заданная статическая матрица B(N,N). Отсортировать ее строки по убыванию...

Отсортировать строки матрицы по возрастанию их максимальных элементов
Нужно отсортировать строки матрицы по возрастанию их максимальных элементов..программу написал, все...

Переставить строки по убыванию значений максимальных элементов строк
Переставить строки по убыванию значений максимальных элементов строк. двумерный массив ,...

2
0 / 0 / 0
Регистрация: 13.12.2017
Сообщений: 5
25.11.2019, 23:51 2
Шаблон кода найден на просторах интернета, чуть подкорректировала под условия задачи.
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
#include <iostream>
#include <iomanip>
 
double max(double *a, int M);
void swap(double *a1, double *a2, int M);
void sort(double **matrix, int N, int M);
 
int main()
{
    double **matrix;
    int N, M;
 
    std::cout << "Enter N: ";
    std::cin >> N;
    M = N;
 
    matrix = new double *[N];
 
    srand(time(NULL));
 
    
    for (int i = 0; i < N; i++)
        matrix[i] = new double [M];
    
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            
            matrix[i][j] = rand() % 100;;
        }
    }
 
    std::cout << std::endl << std::endl << "Before sorting:" << std::endl << std::endl;
 
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
            std::cout << std::setw(3) << matrix[i][j] << " ";
 
        std::cout << std::endl;
    }
 
    sort(matrix, N, M);
 
    std::cout << std::endl << std::endl << "After sorting:" << std::endl << std::endl;
 
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
            std::cout << std::setw(3) << matrix[i][j] << " ";
 
        std::cout << std::endl;
    }
 
    for (int i = 0; i < N; i++)
        delete [] matrix[i];
 
    delete [] matrix;
 
    std::cin.get();
    return 0;
}
 
double max(double *a, int M)
{
    double m = a[0];
 
    for (int i = 0; i < M; i++)
        if (m < a[i])
            m = a[i];
 
    return m;
}
 
void swap(double *a1, double *a2, int M)
{
    for (int i = 0; i < M; i++)
    {
        double temp = a1[i];
        a1[i] = a2[i];
        a2[i] = temp;
    }
}
 
void sort(double **matrix, int N, int M)
{
    for (int i = 0; i < N; i++)
        for (int j = N - 1; j > i; j--)
            if (max(matrix[j - 1], M) < max(matrix[j], M))
                swap(matrix[j - 1], matrix[j], M);
}
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
26.11.2019, 00:18 3
Лучший ответ Сообщение было отмечено Nickie как решение

Решение

Katherina_Kats, вообще не рационально.

лучше иметь массив ключей для сортировки
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
#include <iostream>
#include <iomanip>
#include <ctime>
void sort(double **matrix, double *keys, int N, int M);
int main()
{
    double **matrix;
    double *max;
    int N;
    std::cout << "Input N: ";
    std::cin >> N;
 
    matrix = new double *[N]; 
 
    srand(time(NULL));
    std::cout << std::endl << std::endl << "Before sorting:" << std::endl << std::endl;
    for (int i = 0; i < N; i++) {
        matrix[i] = new double[N];
        for (int j = 0; j < N; j++)
            std::cout << std::setw(3) << (matrix[i][j] = rand() % 100) << " ";
        std::cout << std::endl;
    }
    max = new double[N];
    for (int i = 0; i < N; i++) {
        max[i] = matrix[i][0];
        for (int j = 1; j < N; j++)
            if (matrix[i][j] > max[i])
                max[i] = matrix[i][j];
    }
 
    sort(matrix, max, N, N);
    std::cout << std::endl << std::endl << "After sorting:" << std::endl << std::endl;
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++)
            std::cout << std::setw(3) << matrix[i][j] << " ";
        std::cout << std::endl;
    }
    for (int i = 0; i < N; i++)
        delete[] matrix[i];
    delete[] matrix;
    delete[] max;
    std::cin.get();
    return 0;
}
void sort(double **matrix, double *keys, int N, int M)
{
    for (int i = 0; i < N-1; ++i) {
        int max = i;
        for (int j = i+1; j < M; ++j) 
            if (keys[j] > keys[max])
                max = j;
        if (max != i) {
            keys[max] = keys[i];
            double* tmp = matrix[max];
            matrix[max] = matrix[i];
            matrix[i] = tmp;
        }
    }
}
0
26.11.2019, 00:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2019, 00:18
Помогаю со студенческими работами здесь

Переставить строки по убыванию значений максимальных элементов строк
Добрый вечер. Проблема возникла во время написания программы. В общем условия следующие: (Для...

Переставить строки по убыванию значений максимальных элементов строк массива
Для масива А(m,n), 1&lt;m,n&lt;10 подсчитать количество нулей. Переставить строки по убыванию значений...

Отсортировать строки матрицы по возрастанию максимальных элементов каждой строки
Дана целочисленная квадратная матрица А порядка N. Отсортировать строки матрицы по возрастанию...

Отсортировать строки матрицы по убыванию средних арифметических значений элементов каждой строки
Привет всем,прошу помочь в решении задачи,так как не умею решать задания на матрицы. Дана...


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

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

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