C/C++

Напишите рекурсивную функцию, которая принимает двухмерный массив целых чисел и количество сдвигов и выполняет

Задание 2. Напишите рекурсивную функцию, которая принимает двухмерный массив целых чисел и количество сдвигов и выполняет круговой сдвиг массива вправо.
Например:
Дан массив:
4 5 6 7
1 2 4 1
4 5 6 9
Сдвигаем на три вправо:
5 6 7 4
2 4 1 1
5 6 9 4


Пожалуйста, сделать ещё мне работающий код без ошибок на C++.
Aminjon Khasanov
Aminjon Khasanov
67
 #include  
#include
using namespace std;
template
void sdv(vector& arr, int dv)
{
for (auto& str : arr)
{
vector tmp = str;
if (dv < 0) dv = str.size() - (-dv)%str.size();
for (int i = 0; i < str.size(); i++)
{
str[(i + dv) % str.size()] = tmp[i];
}
}
}

int main()
{
setlocale(0, "");
size_t str, col;
int adv;
puts("Введите размеры");
cin >> str >> col;
vector arr(str, vector(col));
puts("Введите элементы массива");
for (auto& i : arr) for (auto& j : i) cin >> j;
puts("Введите сдвиг (положительный - вправо, отрицательный - влево)");
cin >> adv;
sdv(arr, adv);
for (auto& i : arr)
{
for (auto& j : i) cout
Александр Цуркан
Александр Цуркан
51 416
Лучший ответ
Aminjon Khasanov Спасибо
Вот пример рекурсивной функции на C++, которая принимает двумерный массив arr целых чисел, количество сдвигов shifts и выполняет круговой сдвиг массива вправо:
```void rotateArray(int arr[][cols], int shifts)
{
// базовый случай - количество сдвигов равно 0
if (shifts == 0) {
return;
}

// определяем количество строк и столбцов в массиве
int rows = sizeof(arr) / sizeof(arr[0]);
int cols = sizeof(arr[0]) / sizeof(int);

// переносим последний элемент каждой строки на первый элемент следующей строки
for (int i = 0; i < rows; i++) {
int last = arr[i][cols - 1];
for (int j = cols - 1; j > 0; j--) {
arr[i][j] = arr[i][j - 1];
}
arr[i][0] = last;
}

// рекурсивно вызываем функцию с уменьшенным количеством сдвигов
rotateArray(arr, shifts - 1);
} ```
Для корректной работы этой функции необходимо определить значения rows и cols перед её вызовом.
Mykola Hrebenovich
Mykola Hrebenovich
113
Zurab Epremidze Смешно, когда нейросеть генерирует заведомо нерабочий код.
Ещё смешнее, когда этот бред бездумно копипастят в качестве ответа.
Андрей Калинич С одной стороны - бред бредом, как и обычно от ИИ.
С другой, школьник просто отдаст эту лабуду преподавателю, даже не заботясь, работает это или нет. Заслужил ли преподаватель почётное право разбираться в этой лапше? Видимо, да, раз поставил заведомо идиотские условия для решения задачи.
С третьей стороны в этом завязан мэйл. Заслужил ли мэйл превращение своих "ответов" в помойку, в которой нет ничего, кроме шизофрении от ИИ? Глядя на то, как мэйл шёл к этому лет 15, я так думаю, однозначно заслужил.

Эта программа - квитессенция всего нынешнего состояния данного ресурса. Он достоин быть выбранным в качестве лучшего.

Похожие вопросы