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

Найти все седловые точки двумерного динамического массива

15.06.2022, 07:18. Показов 175. Ответов 2

Уважаемые программисты снова требуется ваша помощь вот с такой задачей.
Найти все седловые точки двумерного динамического массива. Массив имеет седловую точку aij , если aij является минимальным элементом в i-ой строке и максимальным элементом в j - ом столбце.
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <string>
пожалуйста напишите код с такими директориями чтобы я смог понять принцип работы.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2022, 07:18
Ответы с готовыми решениями:

В матрице NxM найти все седловые точки
Для матрицы размером NxM вывести на экран все седловые точки. (Элемент матрицы называется седловой,...

Найти и вывести все седловые точки матрицы
Помогите написать программу.. Вообще не пойму. На форме в Edit1 и Edit2 вводится размерность...

Найти все седловые точки матрицы
Для матрицы m на n вывести на экран все седловые точки. Элемент матрицы называется седловой точкой,...

Найти все седловые точки матрицы
Найти все седловые точки матрицы A(n×m). Матрица имеет седловую точку ij a , если ij a является...

Найти все седловые точки матрицы
Для матрицы А размером NxM вывести на экран все ее седловые точки. Элемент матрицы называется...

2
случайный прохожий
2088 / 1354 / 465
Регистрация: 20.07.2013
Сообщений: 3,790
15.06.2022, 10:37 2
Псевдокод:
Код
цикл(по строкам)
  цикл(по столбцам)
  {
    находим_мин_элемент_строки[их_может_быть_несколько]
    и
    запоминаем_номера_строки_и_столбца_этого_элемента
  }

// далее проверяем элементы с запомненными номерами строк и столбцов
цикл(по строкам)
  если(все элементы столбца не больше того, что минимален в текущей строке)
    то(элемент является седловой точкой)
1
3977 / 2029 / 730
Регистрация: 29.11.2010
Сообщений: 4,357
15.06.2022, 12:20 3
Цитата Сообщение от evgeniyt98 Посмотреть сообщение
пожалуйста напишите код с такими директориями чтобы я смог понять принцип работы.
Как показывает практика, никакие "директории" понять не помогают.

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
154
155
156
157
158
159
160
161
162
163
164
165
166
#include <iostream>
#include <utility>
#include <chrono>
#include <random>
#include <iomanip>
#include <stdexcept>
 
template<typename T>
class Matrix {
public:
    // конструктор с двумя параметрами -- высота и ширина матрицы
    Matrix(std::size_t height, std::size_t width)
            : height(height), width(width), data(new T[height * width]{}) {}
 
    // конструктор с одним параметром, создающий квадратную матрицу
    explicit Matrix(std::size_t size)
            : height(size), width(size), data(new T[height * width]{}) {}
 
    // правило трёх:
    // конструктор копирования
    Matrix(const Matrix<T> &other)
            : height(other.height), width(other.width), data(new T[height * width]) {
        std::copy(other.data, other.data + width * height, data);
    }
 
    // оператор присваивания
    Matrix<T> &operator=(const Matrix<T> &other) {
        if (this != &other) {
            delete[] data;
            height = other.getHeight();
            width = other.getWidth();
            data = new T[height * width];
            copy(other, *this);
        }
        return *this;
    }
 
    // деструктор
    ~Matrix() {
        delete[] data;
    }
 
    // правило пяти:
    // move-конструктор
    Matrix(Matrix<T> &&other) noexcept
            : height(std::move(other.height)), width(std::move(other.width)),
              data(std::exchange(other.data, nullptr)) {}
 
    // move-оператор присваивания
    Matrix<T> &operator=(Matrix<T> &&other) noexcept {
        if (this != &other) {
            this->height = std::move(other.height);
            this->width = std::move(other.width);
            this->data = std::exchange(other.data, data);
        }
        return *this;
    }
 
    // количество строк матрицы
    std::size_t getHeight() const {
        return height;
    }
 
    // количество столбцов матрицы
    std::size_t getWidth() const {
        return width;
    }
 
    // оператор доступа к элементам матрицы
    T &operator()(std::size_t row, std::size_t col) {
        return data[row * width + col];
    }
 
    // константный оператор доступа к константным элементам матрицы
    const T &operator()(std::size_t row, std::size_t col) const {
        return data[row * width + col];
    }
 
private:
    std::size_t height;
    std::size_t width;
    T *data;
};
 
// оператор вывода матрицы на экран
template<typename T>
std::ostream &operator<<(std::ostream &out, const Matrix<T> &m) {
    for (std::size_t i = 0; i < m.getHeight(); ++i) {
        for (std::size_t j = 0; j < m.getWidth(); ++j) {
            out << std::right << std::fixed << std::setprecision(2) << std::setw(7) << m(i, j);
        }
        out << std::endl;
    }
    return out;
}
 
// генератор случайной матрицы
template<typename T, typename Generator>
Matrix<T> generate(std::size_t height, std::size_t width, Generator g) {
    Matrix<T> result(height, width);
    for (std::size_t i = 0; i < result.getHeight(); ++i) {
        for (std::size_t j = 0; j < result.getWidth(); ++j) {
            result(i, j) = g();
        }
    }
    return result;
}
 
// поиск минимумов строк
template<typename T>
Matrix<T> findMinByRow(const Matrix<T> &matrix) {
    Matrix<T> result(matrix.getHeight(), 1);
    for (std::size_t i = 0; i < matrix.getHeight(); ++i) {
        result(i, 0) = matrix(i, 0);
        for (std::size_t j = 1; j < matrix.getWidth(); ++j) {
            if (result(i, 0) > matrix(i, j)) {
                result(i, 0) = matrix(i, j);
            }
        }
    }
    return result;
}
 
// поиск минимумов строк
template<typename T>
Matrix<T> findMaxByCol(const Matrix<T> &matrix) {
    Matrix<T> result(1, matrix.getWidth());
    for (std::size_t i = 0; i < matrix.getWidth(); ++i) {
        result(0, i) = matrix(0, i);
        for (std::size_t j = 1; j < matrix.getHeight(); ++j) {
            if (result(0, i) < matrix(j, i)) {
                result(0, i) = matrix(j, i);
            }
        }
    }
    return result;
}
 
using std::chrono::system_clock;
 
int main() {
    std::default_random_engine re(system_clock::now().time_since_epoch().count());
    std::uniform_int_distribution<int> di(-5, 5);
    auto random = [&re, &di]() { return di(re); };
 
    std::size_t height = 4;
    std::size_t width = 6;
 
    Matrix<int> matrix = generate<int>(height, width, random);
    Matrix<int> rowMin = findMinByRow(matrix);
    Matrix<int> colMax = findMaxByCol(matrix);
 
 
    std::cout << matrix << std::endl << rowMin << colMax;
 
    for (std::size_t i = 0; i < matrix.getHeight(); ++i) {
        for (std::size_t j = 1; j < matrix.getWidth(); ++j) {
            if (rowMin(i, 0) == colMax(0, j) && rowMin(i, 0) == matrix(i, j)) {
                std::cout << "Found point: " << i << ", " << j << " with value " << matrix(i, j) << std::endl;
            }
        }
    }
 
 
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2022, 12:20
Помогаю со студенческими работами здесь

Найти все седловые точки матрицы
Для заданной целой матрицы размером NxM вывести на экран все ее седловые точки. Элемент матрицы...

Найти все седловые точки матрицы A(n × m)
Найти все седловые точки матрицы A(n × m). Матрица имеет седловую точку aij, если aij является...

вывести матрицу размером 5*5 и найти все ее седловые точки
вывести матрицу размером 5*5 и найти все ее седловые точки

Найти в двумерном массиве и вывести на экран все седловые точки
Найти в двухмерном массиве (размер массива задан в коде) и вывести на экран все седловые точки ...

В матрице найти все седловые точки, либо установить, что таких точек нет
Седловой точкой в матрице называется элемент, являющийся одновременно наибольшим в столбце и...

Напечатать в обратном порядке все положительные элементы двумерного динамического массива
Напечатать в обратном порядке все положительные элементы двумерного динамического массива. ...


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

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

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