Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 06.01.2020
Сообщений: 12
1

Требуется повернуть двумерный массив на 90 градусов

09.01.2020, 15:30. Показов 6582. Ответов 7

Author24 — интернет-сервис помощи студентам
Здравствуйте, у меня проблема. Программа поворачивает массив, но не вывод последнюю строку.
( входные данные
3 4
1 2 3 4
5 6 7 8
9 10 11 12
выходные данные
4 3
9 5 1
10 6 2
11 7 3
12 8 4 )

Помогите найти ошибку, пожалуйста

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
int main()
{
    int n, m, k = 0;
    cin >> n >> m;
 
    int** a = new int* [n];
    for (int i = 0; i < n; i++)
    {
        a[i] = new int[m];
    }
    
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cin >> a[i][j];
        }
    }
for (int i = 0; i < m; i++)
    {
        for (int j = i; j < n - 1 - i; j++)
        {
            k = a[i][j];
            a[i][j] = a[n - j - 1][i];
            a[n - j - 1][i] = a[n - i - 1][n - j - 1];
            a[n - i - 1][n - j - 1] = a[j][n - i - 1];
            a[j][n - i - 1] = k;
        }
    }
 
        cout << m << " " << n << endl;
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < n; j++)
            {
                cout << a[i][j] << " ";
            }
            cout << endl;
        }
    
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2020, 15:30
Ответы с готовыми решениями:

Повернуть двумерный массив на 90 градусов. Размер задать с клавиатуры. C++
Нужно повернуть массив, без использования дополнительного массива. Массив (матрица) квадратный....

Дан массив N × M. Требуется повернуть его по часовой стрелке на 90 градусов
Дан массив N × M. Требуется повернуть его по часовой стрелке на 90 градусов. Входные данные На...

Повернуть двумерный массив на 90 градусов
Повернуть двумерный массив на 90 градусов по часовой стрелке. двумерный массив - размер 10х10,...

Повернуть двумерный массив размера n*n на 90 градусов против часовой стрелки
Повернуть двумерный массив размера n*n на 90 градусов против часовой стрелки и вывести результат...

7
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
09.01.2020, 15:37 2
если n не равно m то что же у тебя там переворачивается?
0
1 / 1 / 0
Регистрация: 06.01.2020
Сообщений: 12
09.01.2020, 15:40  [ТС] 3
Не совсем понимаю о чем вы
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
09.01.2020, 17:12 4
ekata, если n не равно m то что же у тебя там переворачивается?
0
Just Do It!
3841 / 2286 / 636
Регистрация: 23.09.2014
Сообщений: 7,075
Записей в блоге: 3
09.01.2020, 17:43 5
ekata,
Поворот неквадратной матрицы на 90° по часовой стрелке
0
1 / 1 / 0
Регистрация: 06.01.2020
Сообщений: 12
10.01.2020, 11:58  [ТС] 6
К сожалению, варианты кода по ссылке для меня слишком слоны, я его не понимаю
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
10.01.2020, 12:07 7
Лучший ответ Сообщение было отмечено ekata как решение

Решение

с дополнительным массивом b, который выделяем "повёрнутой размерности m*n"
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
int main()
{
    int n, m, k = 0;
    cin >> n >> m;
 
    int** a = new int* [n];
    for (int i = 0; i < n; i++)
    {
        a[i] = new int[m];
    }
    
    int** b = new int* [m];
    for (int i = 0; i < m; i++)
    {
        b[i] = new int[n];
    }
    
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cin >> a[i][j];
        }
    }
for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            b[i][j] = a[n - j - 1][i];
        }
    }
 
    for (int i = 0; i < n; i++)
        delete[] a[i];
    delete[] a;
    a=b;
        cout << m << " " << n << endl;
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < n; j++)
            {
                cout << a[i][j] << " ";
            }
            cout << endl;
        }
    for (int i = 0; i < n; i++)
        delete[] a[i];
    delete[] a;
    return 0;
}
1
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
10.01.2020, 15:58 8
ekata, можете еще посмотреть мой код здесь
Может найдете для себя что-то полезное...
0
10.01.2020, 15:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2020, 15:58
Помогаю со студенческими работами здесь

Массив: Повернуть двумерный массив на 90 градусов...
Дан динамический двумерный массив размера m x n нужно повернуть двумерный массив на 90 градусов...

Заданный двумерный массив повернуть но 90 градусов вправо без использования вспомогательных массивов
Заданный двумерный массив N*N повернуть но 90 градусов вправо. без использования вспомагательных...

Дан квадратный двумерный массив, повернуть его на 90 градусов по часовой стрелке без использования второго массива
Дан квадратный двумерный массив, повернуть его на 90 градусов по часовой стрелке без использования...

Повернуть массив на 90 градусов
Нужно повернуть массив на 90 градусов,но только нужно повернуть его так чтобы то что внутри массива...


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

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