Задание 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++.
C/C++
Напишите рекурсивную функцию, которая принимает двухмерный массив целых чисел и количество сдвигов и выполняет
#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
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 перед её вызовом.
```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 перед её вызовом.
Zurab Epremidze
Смешно, когда нейросеть генерирует заведомо нерабочий код.
Ещё смешнее, когда этот бред бездумно копипастят в качестве ответа.
Ещё смешнее, когда этот бред бездумно копипастят в качестве ответа.
Андрей Калинич
С одной стороны - бред бредом, как и обычно от ИИ.
С другой, школьник просто отдаст эту лабуду преподавателю, даже не заботясь, работает это или нет. Заслужил ли преподаватель почётное право разбираться в этой лапше? Видимо, да, раз поставил заведомо идиотские условия для решения задачи.
С третьей стороны в этом завязан мэйл. Заслужил ли мэйл превращение своих "ответов" в помойку, в которой нет ничего, кроме шизофрении от ИИ? Глядя на то, как мэйл шёл к этому лет 15, я так думаю, однозначно заслужил.
Эта программа - квитессенция всего нынешнего состояния данного ресурса. Он достоин быть выбранным в качестве лучшего.
С другой, школьник просто отдаст эту лабуду преподавателю, даже не заботясь, работает это или нет. Заслужил ли преподаватель почётное право разбираться в этой лапше? Видимо, да, раз поставил заведомо идиотские условия для решения задачи.
С третьей стороны в этом завязан мэйл. Заслужил ли мэйл превращение своих "ответов" в помойку, в которой нет ничего, кроме шизофрении от ИИ? Глядя на то, как мэйл шёл к этому лет 15, я так думаю, однозначно заслужил.
Эта программа - квитессенция всего нынешнего состояния данного ресурса. Он достоин быть выбранным в качестве лучшего.
Похожие вопросы
- Написать РЕКУРСИВНУЮ функцию, которая принимает двухмерный массив целых чисел и выполняет круговой сдвиг массива ВЛЕВО.
- Рекурс.функцию, которая принимает 2х-мерный массив целых чисел и кол-во сдвигов и выполняет круговой сдвиг массива влево
- Задан одномерный массив целых чисел создать код на C++
- Даны число N и последовательность из N целых чисел. Найти количество и сумму тех чисел, которые нечетны и положительны.
- Как написать функцию которая вычисляет арктангенс из любого числа на c++ без использования библиотек
- Помогите написать программу по обработке двухмерного массива в с++
- Написал функцию, которая добавляет элемент в конец массива, как можно улучшить? Нули не учитываются.
- Как передать двухмерный массив в качестве аргумента через указатель.
- Найти произведение элементов массива а, состоящего из 25 целых чисел, кратных 2 на Паскаль
- При совершении арифметических операций с переданными в рекурсивную функцию переменными, переменные меняются(Си)