Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
KB-1C
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 29
#1

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

05.06.2014, 23:53. Просмотров 798. Ответов 1
Метки нет (Все метки)

Осуществить циклический сдвиг элементов квадратной матрицы размерность M x N вправо на k элементов таким образом: элементы первой строки сдвигаются в последний столбец сверху вниз, из него - в последнюю строку справа налево, из неё - в первый столбец снизу вверх, из него - в первую строку; для остальных элементов - аналогично.

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

Осуществить циклический сдвиг элементов квадратной матрицы
(Console Application) Осуществить циклический сдвиг элементов квадратной матрицы размером М х N вправо на k элементов таким образом:...

Осуществить циклический сдвиг элементов квадратной матрицы
Помогите решить эту задачу: Осуществить циклический сдвиг элементов квадратной матрицы размерности М х N вправо на К элементов следующим...

Как осуществить циклический сдвиг элементов квадратной матрицы
Помогите осуществить циклический сдвиг элементов квадратной матрицы размерности MXN вправо на k элементов таким образом: элементы 1-й...

В квадратной матрице выполнить циклический сдвиг строк
В квадратной матрице выполнить циклический сдвиг строк таким образом, чтобы максимальный элемент каждой строки был расположен на главной...

Динамические массивы,циклический сдвиг столбцов массива
Здравствуйте, Нужно сдвинуть столбцы динамической матрицы циклически вправо, у меня почему то ошибка, подскажите пожалуйста в чем...

Выполнить циклический сдвиг элементов каждой строки матрицы на количество позиций, равное номеру строки
Дана матрица целых чисел X(5х8). Выполнить циклический сдвиг элементов каждой строки матрицы на количество позиций, равное номеру строки....

1
GuGo1991
269 / 263 / 146
Регистрация: 02.08.2012
Сообщений: 609
06.06.2014, 06:25 #2
Лучший ответ Сообщение было отмечено KB-1C как решение

Решение

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;
}
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2014, 06:25
Привет! Вот еще темы с решениями:

Осуществить циклический сдвиг элементов квадратной
Осуществить циклический сдвиг элементов квадратной матрицы на n элементов вправо или вниз (в зависимости от введенного режима), n может...

Выполнить циклический сдвиг элементов массива
Выполнить циклический сдвиг элементов массива X(N), N меньше или равно 20,на К позиций, в результате которое последнее К элементов займут...

Выполнить циклический сдвиг матрицы влево и показать на экран полученный результат
Здравствуйте, помогите исправить алгоритм. Вот задача : Создайте двухмерный массив. Пользователь выбирает количество сдвигов Выполнить...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru