Форум программистов, компьютерный форум CyberForum.ru

Выполнить циклический сдвиг элементов квадратной матрицы, используя локальные и динамические массивы - C++

Восстановить пароль Регистрация
 
KB-1C
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 29
05.06.2014, 23:53     Выполнить циклический сдвиг элементов квадратной матрицы, используя локальные и динамические массивы #1
Осуществить циклический сдвиг элементов квадратной матрицы размерность M x N вправо на k элементов таким образом: элементы первой строки сдвигаются в последний столбец сверху вниз, из него - в последнюю строку справа налево, из неё - в первый столбец снизу вверх, из него - в первую строку; для остальных элементов - аналогично.

Добавлено через 1 час 11 минут
Сам я это даже не представляю как делать
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2014, 23:53     Выполнить циклический сдвиг элементов квадратной матрицы, используя локальные и динамические массивы
Посмотрите здесь:

C++ Осуществить циклический сдвиг элементов прямоугольной матрицы
Циклический сдвиг прямоугольной матрицы на n элементов вправо C++
C++ Осуществить циклический сдвиг элементов квадратной матрицы
Массивы: осуществить циклический сдвиг элементов массива C++
C++ Выполнить циклический сдвиг элементов массива
Как осуществить циклический сдвиг элементов квадратной матрицы C++
C++ Осуществить циклический сдвиг элементов квадратной
C++ В квадратной матрице выполнить циклический сдвиг строк

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
06.06.2014, 06:25     Выполнить циклический сдвиг элементов квадратной матрицы, используя локальные и динамические массивы #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <conio.h>
#include <iomanip>
 
int main()
{
    int H, W, counter = 0, k;
    std::cout << "Type H: "; std::cin >> H;
    std::cout << "H = W = " << H;
    std::cout << std::endl;
    W = H;
    std::cout << std::endl;
    int** M = new int*[H];
    for(int i = 0; i < H; i++)
        M[i] = new int[W];
        
    for(int i = 0; i < H; i++)
    {
        for(int j = 0; j < W; j++)
        {
            M[i][j] = ++counter;
            std::cout << std::setw(4) << M[i][j];
        }
        std::cout << "\n\n";
    }
    
    std::cout << "\nType k: "; std::cin >> k;
    std::cout << "\n\n";
    
    int index = 0;
    while(k > 0)
    {
        while(index < H / 2)
        {
            for(int j = index; j < H - 1 - index; j++)
                std::swap(M[j][index], M[j + 1][index]);
            for(int j = index; j < W - 1 - index; j++)
                std::swap(M[H - 1 - index][j], M[H - 1 - index][j + 1]);
            for(int j = H - 1 - index; j > index; j--)
                std::swap(M[j][W - 1 - index], M[j - 1][W - 1 - index]);
            for(int j = W - 1 - index; j > index + 1; j--)
                std::swap(M[index][j], M[index][j - 1]);
            index++;
        }
        index = 0;
        k--;
    }
    
    for(int i = 0; i < H; i++)
    {
        for(int j = 0; j < W; j++)
            std::cout << std::setw(4) << M[i][j];
        std::cout << "\n\n";
    }
    
    for(int i = 0; i < H; i++)
        delete [] M[i];
    delete [] M;
    
    std::cout << "\nOperation succeeded\n";
    getch();
    return 0;
}
Yandex
Объявления
06.06.2014, 06:25     Выполнить циклический сдвиг элементов квадратной матрицы, используя локальные и динамические массивы
Ответ Создать тему
Опции темы

Текущее время: 12:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru