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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
#1

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

17.11.2013, 17:21. Просмотров 269. Ответов 1
Метки нет (Все метки)

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

Осуществить "вращение" квадрата вокруг его центра - C++
вот есть не сложная задачка для Си: Осуществить "вращение" квадрата вокруг его центра. кто сможет сделать такое,буду очень...

Для массива из 10 чисел проверить, есть ли в нем два одинаковых числа и напечатать "да" или "нет" - C++
void check_same(const int* a) { for (const int* p = a; p < a + 9; p++) for (const int* q = p+1; q < a + 10; q++) ...

Разработать класс "Массив больших чисел", который состоит из объектов класса "Большие целые числа". Найти сумму элементов массива. - C++
Разработать класс "Массив больших чисел", который состоит из объектов класса "Большие целые числа". Найти сумму элементов массива. ...

Необработанное исключение в "0x776315de" в "c++1.exe": 0xC0000005: Нарушение прав доступа при записи "0x40e000 - C++
Здравствуйте. Только начал работать с динамическим массивом, но не могу понять почему появляется эта ошибка. Работаю с библиотекой sfml....

Из слова "яблоко" путем склеек и вырезок его букв получить слова "блок" и "око" - C++
Самым самым самым простым способом.

Необработанное исключение в "0x0138169d" в "kursovaya.exe": 0xC0000005: Нарушение прав доступа при чтении "0x6 - C++
Программа выдает ошибку, может кто видит где? и как исправить Код: #include <iostream> #include <ctime> #include <cmath> using...

Необработанное исключение в "0x104b2288" в "Matrix.exe": 0xC0000005: Нарушение прав доступа при записи "0xcdcd - C++
Вот такая ошибка!

Замените в слове "му" на "а", а букву "ы" на "ца". - C++
Замените в слове "му" на "а", а букву "ы" на "ца".

Как сделать "Старт", "Пауза", Стоп"? - C++
Доброго времени суток, как сделать так, чтобы при нажатии на кнопку начиналось цикличное действие (рисование например) и продолжалось бы...

Структура ORDER с полями "номер счета плательщика", "номер счета получателя" и "сумма платежа" - C++
написать структуру ORDER. с полями 1.номер счета плательщика 2.счета получателя 3.сумма платежа


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ПерС
371 / 287 / 89
Регистрация: 05.11.2013
Сообщений: 820
Записей в блоге: 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
Ответ Создать тему
Опции темы

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