C/C++

9.Составить программу с использованием функции

 #include  
#include
#include
#include

#define RAND(min, max) (rand() % ((max) - (min)) + (min))

using namespace std;

size_t input(const char* msg) {
cout > value;
cin.ignore(0x1000, '\n');
return value;
}

void rows_shift(int** matrix, const size_t n, const size_t m) {
auto tmp = new int[m];
for (size_t i = 0; i < m; ++i) tmp[i] = matrix[0][i];
for (size_t i = 1; i < n; ++i) {
for (size_t j = 0; j < m; ++j) {
matrix[i - 1][j] = matrix[i][j];
}
}
for (size_t i = 0; i < m; ++i) {
matrix[n - 1][i] = tmp[i];
}
}

void cols_shift(int** matrix, const size_t n, const size_t m) {
auto tmp = new int[n];
for (size_t i = 0; i < n; ++i) tmp[i] = matrix[i][0];
for (size_t j = 1; j < m; ++j) {
for (size_t i = 0; i < m; ++i) {
matrix[i][j - 1] = matrix[i][j];
}
}
for (size_t i = 0; i < n; ++i) {
matrix[i][m - 1] = tmp[i];
}
}

pair max_position(int** matrix, const size_t n, const size_t m) {
pair box{};
auto max = matrix[0][0];
for (size_t i = 0; i < n; ++i) {
for (size_t j = 0; j < n; ++j) {
if (matrix[i][j] > max) {
max = matrix[i][j];
box.first = i;
box.second = j;
}
}
}
return box;
}

void max_move(int** matrix, const size_t n, const size_t m, const size_t k) {
auto [row, col] = max_position(matrix, n, m);
while (row != k) {
rows_shift(matrix, n, m);
auto next = max_position(matrix, n, m);
row = next.first;
}
while (col != k) {
cols_shift(matrix, n, m);
auto next = max_position(matrix, n, m);
col = next.second;
}
}

int main() {
srand(unsigned(time(nullptr)));
auto n = input("n: ");
auto m = input("m: ");
puts("");
auto matrix = new int* [n];
for (size_t i = 0; i < n; ++i) {
matrix[i] = new int[m];
for (size_t j = 0; j < m; ++j) {
matrix[i][j] = RAND(10, 100);
cout
Nikita Goldzberg
Nikita Goldzberg
98 169
Лучший ответ
Евгений Ткаченков Почему когда пишу значение k допустим 2 он выбирает не вторую строчку и столбец,а третий, не могу понять что не так?