Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
ApsenT
-6 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 11
1

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

13.10.2017, 15:08. Просмотров 747. Ответов 2
Метки нет (Все метки)

Помогите пожалуйста. Ломаю голову не могу написать

Отсортировать по убыванию элементов последнего столбца целочисленный двухмерный массив 5x4 без использования функции swap
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2017, 15:08
Ответы с готовыми решениями:

Отсортировать по убыванию элементов последнего столбца целочисленный двухмерный массив 5x4
Отсортировать по убыванию элементов последнего столбца целочисленный двухмерный...

Отсортировать по убыванию элементов последнего столбца целочисленный двухмерный массив 5x4 C++
Помогите пожалуйста. Ломаю голову не могу написать Отсортировать по...

Отсортировать массив на N элементов по убыванию
Сам массив: const int size = 80; int matrix; srand(time(NULL)); cout...

Отсортировать целочисленный массив по возрастанию суммы двух последних цифр в записи его элементов
Отсортировать целочисленный массив по возрастанию суммы двух последних цифр в...

Дан квадратный массив из n элементов. Найти сумму элементов последнего столбца
Дан квадратный массив из n элементов. Найти сумму элементов последнего столбца.

2
zss
Модератор
Эксперт С++
7478 / 6847 / 4324
Регистрация: 18.12.2011
Сообщений: 18,112
Завершенные тесты: 1
13.10.2017, 15:11 2
1. http://www.cyberforum.ru/cpp-beginners/thread2080479.html

2. Темы внизу этой страницы
0
Nishen
Модератор
628 / 405 / 209
Регистрация: 26.02.2015
Сообщений: 1,904
Завершенные тесты: 3
13.10.2017, 18:56 3
Лучший ответ Сообщение было отмечено ApsenT как решение

Решение

Matrix.hpp
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
#ifndef MATRIX_HPP
#define MATRIX_HPP
 
#include <exception>
#include <iostream>
#include <random>
#include <vector>
 
enum Order { desc, inc };
 
class Matrix {
 
    public:
        Matrix();
        Matrix(std::size_t, std::size_t);
        Matrix(std::size_t, std::size_t, int);
        Matrix(const Matrix&);
        ~Matrix();
 
        void fillRandomValue(int, int);
 
        void sortRowsByCol(std::size_t, Order = inc);
 
        void print();
 
        bool isEmpty() const;
 
    private:
        void swap(std::vector<int>&, std::vector<int>&);
        std::size_t rows;
        std::size_t cols;
        std::vector<std::vector<int>> matrix;
 
};
 
#endif //MATRIX_HPP


Добавлено через 27 секунд
Matrix.cpp
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#include "Matrix.hpp"
 
//----------------------------------------------------------------------------------------
Matrix::Matrix()
    : rows(0), cols(0), matrix() {
 
    //TODO
 
}
//----------------------------------------------------------------------------------------
Matrix::Matrix(std::size_t r, std::size_t c)
    : rows(r), cols(c) {
 
    matrix.resize(rows);
 
    for (auto& rows : matrix) {
 
        rows.resize(cols);
 
    }
 
}
//----------------------------------------------------------------------------------------
Matrix::Matrix(std::size_t r, std::size_t c, int v)
    : Matrix(r, c) {
 
    for (auto& row : matrix) {
 
        for (auto& value : row) {
 
            value = v;
 
        }
 
    }
 
}
//----------------------------------------------------------------------------------------
Matrix::Matrix(const Matrix& m) {
 
    matrix = m.matrix;
    rows = m.rows;
    cols = m.cols;
 
}
//----------------------------------------------------------------------------------------
Matrix::~Matrix() {
 
    //TODO
 
}
//----------------------------------------------------------------------------------------
void Matrix::fillRandomValue(int lowerBound, int upperBound) {
 
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<int> dist(lowerBound, upperBound);
 
    for (auto& row : matrix) {
 
        for (auto& value : row) {
 
            value = dist(gen);
 
        }
 
    }
 
}
//----------------------------------------------------------------------------------------
void Matrix::sortRowsByCol(std::size_t col, Order order) {
 
    if (order == Order::inc) {
 
        for (std::size_t i { 0 }; i < rows; ++i) {
            
            for (std::size_t j { i }; j < rows; ++j) {
            
                if (matrix.at(i).at(col) > matrix.at(j).at(col)) {
            
                    swap(matrix.at(i), matrix.at(j));
            
                }
            
            }
            
        }
 
    } else {
 
        for (std::size_t i { 0 }; i < rows; ++i) {
            
            for (std::size_t j { i }; j < rows; ++j) {
            
                if (matrix.at(i).at(col) < matrix.at(j).at(col)) {
            
                    swap(matrix.at(i), matrix.at(j));
            
                }
            
            }
            
        }
 
    }
 
}
//----------------------------------------------------------------------------------------
void Matrix::print() {
 
    for (auto row : matrix) {
 
        for (auto value : row) {
 
            std::cout
                << value << " ";
 
        }
 
        std::cout
            << std::endl;
 
    }
 
}
//-----------------------------------------------------------------------------------------
bool Matrix::isEmpty() const {
 
    return matrix.size();
 
}
//-----------------------------------------------------------------------------------------
void Matrix::swap(std::vector<int>& lhs, std::vector<int>& rhs) {
 
    std::size_t size = lhs.size();
 
    if (lhs.size() != rhs.size()) {
 
        std::runtime_error("Matrix::swap(): The size of vectors are different");
 
    }
 
    int temp;
 
    for (std::size_t i { 0 }; i < size; ++i) {
 
        temp = lhs.at(i);
        lhs.at(i) = rhs.at(i);
        rhs.at(i) = temp;
 
    }
 
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2017, 18:56

Заполнить целочисленный двухмерный массив
Заполнить целочисленный двухмерный массив размера NN случайными числами в...

Дан двухмерный массив.Выямнить является ли произведение элементов заданного столбца массива трехзначным числом
Дан двухмерный массив.Выямнить является ли произведение элементов заданного...

Заполнить целочисленный двухмерный массив размера N
1. Заполнить целочисленный двухмерный массив размера NN случайными числами в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru