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

Переворот массива - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Chymardos
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 78
12.06.2013, 00:32     Переворот массива #1
Как переворачивают не обычных массив, а двухмерный ? К примеру 4x4 ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 00:32     Переворот массива
Посмотрите здесь:

переворот массива относительно главной диагонали (транспонирование) C++
реверсивный переворот C++
переворот двумерного массива на 90 градусов C++
Массив: переворот половины массива C++
C++ Переворот массива с произвольного индекса
Переворот масива C++
Переворот слов C++
Переворот массива C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VEINHORN
542 / 91 / 22
Регистрация: 16.12.2011
Сообщений: 317
12.06.2013, 01:28     Переворот массива #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
#include<iostream>
using namespace std;
 
int main() {
    const int size = 4;//размер матрицы
    int mas[size][size];
    //объявляем одном массив
    int tmpmas[size*size];
    int num; //для заполнения массива
    for(int i = 0;i < 4;i++)
        for(int j = 0;j < 4;j++)
            mas[i][j] = num++; //тут заполнение
    int k = 0; //для индексации элементов одномерного массива
    //запись в массив элементов матрицы
    for(int i = 0;i < 4;i++)
        for(int j = 0;j < 4;j++,k++)
            tmpmas[k] = mas[i][j];
    k = size * size - 1;//установка индекса одном массива на конец
    //перепись матрицы начиная с конца одном массива
    for(int i = 0;i < 4;i++)
        for(int j = 0;j < 4;j++,k--)
            mas[i][j] = tmpmas[k];
    //вывод массива в консоль
    for(int i = 0;i < 4;i++)
        for(int j = 0;j < 4;j++)
            cout << mas[i][j] << endl;
    system("pause");
    return 0;
}
Гром
 Аватар для Гром
199 / 118 / 10
Регистрация: 20.03.2009
Сообщений: 1,075
Записей в блоге: 15
12.06.2013, 01:53     Переворот массива #3
Если под переворачиванием подразумевается отражение относительно побочной диагонали, то
C++
1
2
3
for (int i = 0; i < sz - 1; ++i)
 for (int j = 0; j <= i; ++j)
  swap(a[i][j], a[sz - i + 1][sz - j + 1]);
Yandex
Объявления
12.06.2013, 01:53     Переворот массива
Ответ Создать тему
Опции темы

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