1 / 1 / 0
Регистрация: 17.04.2019
Сообщений: 28
1

Циклически сдвинуть элементы побочной диагонали вниз на k позиций

17.04.2019, 16:10. Показов 2070. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста. Не знаю, как прописать условие или цикл, что бы он нижний угловой элемент перемещал наверх. Только не нужно, пожалуйста, кидать ссылки на другие такие похожие задачи.

Дан символьный массив А[N][N], а также целые числа 0<k<N и 0<m<N. Циклически сдвинуть элементы побочной диагонали вниз на k позиций. Затем циклически сдвинуть элементы главной диагонали вверх на m позиций. Определить значение элемента, стоящего на пересечении диагоналей после преобразований массива.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2019, 16:10
Ответы с готовыми решениями:

Циклически сдвинуть элементы побочной диагонали матрицы вниз на k позиций
Только разобрался с одномерным массивом, как уже двумерные.. Help, голова уже едет:wall: Дан...

Сдвинуть строки матрицы циклически на k позиций вниз
Помогите пожалуйста с написанием программы Дан целочисленный массив A и целое число 0&lt;k&lt;N....

Сдвинуть элементы массива циклически на n позиций вправо
Здесь Надо исправить условия(код) на вправо!! #include &lt;iostream&gt; using namespace std; void...

Элементы массива циклически сдвинуть на k позиций влево
Помогите пожалуйста написать программу!!!понимаю что все должно быть оч легко, но... В С++: 1. Дан...

7
75 / 55 / 21
Регистрация: 10.07.2018
Сообщений: 214
17.04.2019, 16:40 2
А почему не нужно ссылки на похожие задачи? Настолько не хочется разбираться?
0
1 / 1 / 0
Регистрация: 17.04.2019
Сообщений: 28
17.04.2019, 17:58  [ТС] 3
Потому что я уже просматривала их миллион раз и я не понимаю почему там пишется именно такое условие

Добавлено через 3 минуты
Я знаю как это сделать через индексы, но так она не работает. В других похожих заданиях это сделано через размерность массива, но как и почему я не понимаю и тем более, как тоже самое сделать с моей задачей.
0
6089 / 3447 / 1402
Регистрация: 07.02.2019
Сообщений: 8,762
17.04.2019, 18:01 4
Цитата Сообщение от Yki_Sakura Посмотреть сообщение
значение элемента, стоящего на пересечении диагоналей
А если N четное, то что там на пересечении?
0
1 / 1 / 0
Регистрация: 17.04.2019
Сообщений: 28
17.04.2019, 18:08  [ТС] 5
с этим я разберусь, меня волнует другой вопрос
0
6089 / 3447 / 1402
Регистрация: 07.02.2019
Сообщений: 8,762
17.04.2019, 18:11 6
Цитата Сообщение от Yki_Sakura Посмотреть сообщение
Циклически сдвинуть элементы побочной диагонали
Я не пойму, циклически сдвинуть столбцы или последовательность элементов диагонали?
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
17.04.2019, 18:43 7
Лучший ответ Сообщение было отмечено Yki_Sakura как решение

Решение

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
/*
Дан символьный массив А[N][N], а также целые числа 0 < k < N и 0 < m < N.Циклически сдвинуть элементы 
    побочной диагонали вниз на k позиций.Затем циклически сдвинуть элементы главной диагонали вверх на
    m позиций.Определить значение элемента, стоящего на пересечении диагоналей после преобразований массива.
*/
#include <iostream>
#include <cstdlib>
const int N = 10;
char A[N][N];
int main() {
    srand(0xABCDEF);
    for (auto& i : A) {
        for (auto& j : i)
        {
            j = rand() % 25 + 'A';
            std::cout << j;
        }
        std::cout << std::endl;
    }
    std::cout << std::endl;
    int k, m;
    std::cin >> k >> m;
    ////////////////////////////////////////////////
    for (int i = 0, j = N-k-1; i < j; ++i, --j)
        std::swap(A[i][N - 1 - i], A[j][N - 1 - j]);
    for (int i = N-k, j = N - 1; i < j; ++i, --j)
        std::swap(A[i][N - 1 - i], A[j][N - 1 - j]);
    for (int i = 0, j = N - 1; i < j; ++i, --j)
        std::swap(A[i][N - 1 - i], A[j][N - 1 - j]);
    /////////////////////////////////////////
    for (int i = 0, j = m-1; i < j; ++i, --j)
        std::swap(A[i][i], A[j][j]);
    for (int i = m, j = N - 1; i < j; ++i, --j)
        std::swap(A[i][i], A[j][j]);
    for (int i = 0, j = N-1; i < j; ++i, --j)
        std::swap(A[i][i], A[j][j]);
    ////////////////////////////////////////////////
    for (auto& i : A) {
        for (auto& j : i)
            std::cout << j;
        std::cout << std::endl;
    }
    std::cout << std::endl;
    return 0;
}
1
1 / 1 / 0
Регистрация: 17.04.2019
Сообщений: 28
18.04.2019, 15:24  [ТС] 8
спасибо огромное
0
18.04.2019, 15:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2019, 15:24
Помогаю со студенческими работами здесь

Сдвинуть элементы массива циклически на n позиций вправо.
спасибо

Сдвинуть циклически элементы одномерного массива на k позиций влево
Тема и есть условие задачи... Сам же я застопорился на написании алгоритма сдвига :- #include...

Сдвинуть все элементы последовательности циклически на k позиций влево
1. Дано целое число. Если число отрицательное, то необходимо вывести все четные числа, начиная со...

Все элементы массива X(30) циклически сдвинуть на n позиций влево
Все элементы массива X(30) циклически сдвинуть на n позиций влево при помощи указателей


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru