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

"Вращение" массива - C++

Восстановить пароль Регистрация
 
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
17.11.2013, 17:21     "Вращение" массива #1
Поделитесь мыслями, как можно, скажем, в массиве 5 х 5 осуществить перестановку элеменов так, словно мы его повернули на 90/180/270 градусов? Я тут набросал свой вариант, поделюсь, если вы поделитесь своим)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2013, 17:21     "Вращение" массива
Посмотрите здесь:

C++ Заменить все элементы массива большие чем "a" значением максимального элемента этого массива
кто нибудь делал прогу на С++ "Эмулятор клавиш с промежутком времени между "нажатиями""?! C++
Осуществить "вращение" квадрата вокруг его центра C++
В одномерном массиве состоящим из "N" вещественных элементов вычислить сумму элемента массива с не четными "N" C++
C++ если не составит труда(при вводе "n" должно создаваться предложение "Мне n год (года)")
При сокращении "Фамилия Имя Отчество" к "Фамилия И.О." пропадают "И.О." C++
C++ Ошибки в примере:"newline in constant"и"unexpected end of file while looking for precompiled header directive"
C++ Переписать элементы массива "X" в массив "Y" и подсчитать их количество

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ПерС
366 / 282 / 84
Регистрация: 05.11.2013
Сообщений: 806
Записей в блоге: 5
Завершенные тесты: 1
17.11.2013, 18:13     "Вращение" массива #2
Если массив квадратен и писать в новую матрицу, задач абсолютно тривиальна.
Как понимаешь, достаточно функции вращения на 90 градусов, вызываемой нужное число раз.
В примере квадратная матрица "вращается" четырежды, возвращаясь, в итоге, "на место".
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
#include <stdio.h>
 
int ** turn90 (int n, int **a) {
 int i,j;
 int **b;
 b = new int * [n];
 for (i=0; i<n; i++) b[i]= new int [n];
 for (i=0; i<n; i++)
 for (j=0; j<n; j++) {
  b[j][n-i-1]=a[i][j];
 }
 return b;
}
 
void out (char *s, int n, int **a) {
 int i,j;
 printf ("\n%s",s);
 for (i=0; i<n; i++) {
  printf ("\n");
  for (j=0; j<n; j++) printf ("%d ",a[i][j]);
 }
}
 
 
int main () {
 const int n=5;
 int **a;
 int i,j,k=1;
 a = new int * [n];
 for (i=0; i<n; i++) a[i]= new int [n];
 for (i=0; i<n; i++)
 for (j=0; j<n; j++) a[i][j]=k++;
 out ("Before",n,a);
 int **b=turn90 (n,a);
 out ("After 1",n,b);
 int **c=turn90 (n,b);
 out ("After 2",n,c);
 int **d=turn90 (n,c);
 out ("After 3",n,d);
 int **e=turn90 (n,d);
 out ("After 4",n,e);
 getchar();
 return 0;
}
Вывод:
Before
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
After 1
21 16 11 6 1
22 17 12 7 2
23 18 13 8 3
24 19 14 9 4
25 20 15 10 5
After 2
25 24 23 22 21
20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
After 3
5 10 15 20 25
4 9 14 19 24
3 8 13 18 23
2 7 12 17 22
1 6 11 16 21
After 4
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
Yandex
Объявления
17.11.2013, 18:13     "Вращение" массива
Ответ Создать тему
Опции темы

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