Задание 4 по теме функции. перегрузка функций. рекурсия. на языке программирования c++ - Вопросы по С+

Вопрос Задание 4 по теме функции. перегрузка функций. рекурсия. на языке программирования c++

Регистрация
29 Май 2013
Сообщения
78
Репутация
0
Спасибо
0
Монет
0
Пожалуйста имейте ввиду, что этот пользователь забанен
Пожалуйста. Помогите мне написать рекурсивную функцию, которая принимает двухмерный массив целых чисел и количество сдвигов и выполняет круговой сдвиг массива ВНИЗ.

Например:



Дан массив:



4 5 6 7

1 2 4 1

4 3 6 8



Сдвигаем ВНИЗ НА ОДИН (должно быть потом вот так):



4 3 6 8

4 5 6 7

1 2 4 1



ПРОСЬБА, НЕЙРОСЕТЬ НЕ ИСПОЛЬЗОВАТЬ!!!



НЕ КОПИРОВАТЬ НЕРАБОТАЮЩИЕ КОДЫ С++ С ИНТЕРНЕТА!



Читайте внимательно задание. И помогите мне с этим
 
Регистрация
22 Июн 2013
Сообщения
84
Репутация
0
Спасибо
0
Монет
0
#include
#include

void shiftDown(std::vector& matrix, int shifts) {
if (shifts < 0) {
std::cerr
 
Регистрация
22 Дек 2013
Сообщения
86
Репутация
1
Спасибо
1
Монет
0
#include
#include

using std::vector;

void print_matrix(const vector& matrix) {
for (const auto& row : matrix) {
for (int val : row) {
std::cout
 
Регистрация
12 Май 2013
Сообщения
86
Репутация
0
Спасибо
0
Монет
0
#include
#include
#include

typedef unsigned char byte;

void rotate(int* matrix, int rows, int cols, int shift) {
shift %= rows;
if (shift < 0)
shift += rows;
if (shift) {
void* buffer = malloc(sizeof(int) * cols);
if (buffer) {
memcpy(buffer, matrix + ((rows - 1) * cols), sizeof(int) * cols);
memmove(matrix + cols, matrix, (rows - 1) * cols * sizeof(int));
memcpy(matrix, buffer, sizeof(int) * cols);
free(buffer);
rotate(matrix, rows, cols, shift - 1);
}
}
}
void print(int* matrix, int cols, int rows) {
for (int i = 0; i < rows; i++) {
printf("%i", matrix[i * cols]);
for (int j = 1; j < cols; j++)
printf(", %i", matrix[i*cols+j]);
printf("\n");
}
printf("\n");
}
int matrix[3][3] = {
{0,1,0},
{1,0,1},
{0,1,0},
};

int main() {
print((int*)matrix, 3, 3);
rotate((int*)matrix, 3, 3, -1);
print((int*)matrix, 3, 3);
}
277380350_8c921810cac8c9b43f8f9985d4d24407_800.png

 
Регистрация
13 Окт 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
#include
#include
using namespace std;

void scroll(int** arr, size_t str, int dist)
{
if (dist > str) dist = dist % str;
if (!dist) return;
for (size_t i = str - 1; i > 0; i--) swap(arr, arr[i - 1]);
scroll(arr, str, dist - 1);
}
void print(int** arr, size_t str, size_t col)
{
for (size_t i = 0; i < str; i++)
{
for (size_t j = 0; j < col; j++) cout > col;
int** arr = new int* [str];
arr[0] = new int[str * col];
for (size_t i = 1; i < str; i++) arr = arr[0] + i * col;
puts("Enter elements");
for (size_t i = 0; i < str * col; i++) cin >> arr[0];
puts("Your arr:");
print(arr, str, col);
puts("Enter dist:");
cin >> dist;
scroll(arr, str, dist);
puts("Your arr:");
print(arr, str, col);
}
 
Сверху Снизу