Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Незнайка74
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 15
1

Повернуть квадратную матрицу на угол 45 градусов по часовой стрелке

30.10.2015, 22:59. Просмотров 1209. Ответов 15
Метки нет (Все метки)

Помогите пожалуйста. Долго бился, не получилось ничего.
Условие: Как повернуть квадратный массив на угол 45 градусов по часовой стрелке.

Буду благодарен.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2015, 22:59
Ответы с готовыми решениями:

Не используя дополнительную матрицу, повернуть квадратную матрицу по часовой стрелке на 180 градусов
Не используя дополнительную матрицу,повернуть квадратную матрицу по часовой...

Повернуть матрицу на 90 градусов по часовой стрелке и вывести результат на экран
Помогите решить))) Дана квадратная матрица n x n, состоящая из натуральных...

Развернуть квадратную матрицу на 90 градусов по часовой стрелке
Развернуть квадратную матрицу на 90 градусов по часовой стрелке.Выдать...

Получить новую квадратную матрицу, переставляя ее блоки по часовой стрелке
спасибо заранее;)

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

15
ZX Spectrum-128
Модератор
Эксперт Pascal/Delphi
4205 / 3059 / 3783
Регистрация: 05.06.2014
Сообщений: 15,358
30.10.2015, 23:01 2
Незнайка74, никак.
0
Незнайка74
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 15
30.10.2015, 23:03  [ТС] 3
Это возможно. Там в выводе должен получится ромб, окруженный нулями, по идее
0
ZX Spectrum-128
Модератор
Эксперт Pascal/Delphi
4205 / 3059 / 3783
Регистрация: 05.06.2014
Сообщений: 15,358
31.10.2015, 09:48 4
У меня получилось так.
Исходная матрица:
1 1
2 2
Полученная матрица:
0 1 0
2 0 1
0 2 0

На поворот совсем не похоже.

Добавлено через 10 часов 18 минут
Сидел вчера, рисовал
Сам себе задачу придумал
Размерность - 2
Исходная матрица:
1 1
2 2
Полученная матрица:
0 1 0
2 0 1
0 2 0

Размерность - 3
Исходная матрица:
1 1 1
2 2 2
3 3 3
Полученная матрица:
0 0 1 0 0
0 2 0 1 0
3 0 2 0 1
0 3 0 2 0
0 0 3 0 0
При "повороте" матрицы размерность "повернутой" растет так:
2 3 4 ...
3 5 7 ...
Это (2n-1)?

Назовем нули, лежащие внутри "ромба" паразитными (выделены красным)
Зависимость количества паразитных нулей:
2 3 4 ...
1 4 9 ...
Не смог составить формулу.

И боковые треугольники из нулей еще интересно:
Количество нулей в них
2 3 4 ...
1 3 6 ...
Тоже не дотумкал
2
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
4138 / 2733 / 2171
Регистрация: 22.11.2013
Сообщений: 7,636
31.10.2015, 10:08 5
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
const n=5;
var
  a: array [1..n,1..n] of Integer;
  b: array [1..2*n-1,2*n-1] of Integer;
  i, j: Integer;
begin
  {...}
  for i:=1 to n do for j:=1 to n do b[n+j-i,n+j-i]:=a[i,j];
  {...}
end.
1
ZX Spectrum-128
Модератор
Эксперт Pascal/Delphi
4205 / 3059 / 3783
Регистрация: 05.06.2014
Сообщений: 15,358
31.10.2015, 10:19 6
bormant, теперь, кажется, понятно, что хотел ТС.
Не поворот исходной матрицы, а создание новой, в которой и будет осуществлен "поворот".
Спасибо.
0
Незнайка74
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 15
31.10.2015, 17:03  [ТС] 7
Здравствуйте. Да, именно это я имел ввиду. Только у меня почему то, при использовании данного кода, в выводе квадратный массив становится строчкой.
0
ZX Spectrum-128
Модератор
Эксперт Pascal/Delphi
4205 / 3059 / 3783
Регистрация: 05.06.2014
Сообщений: 15,358
31.10.2015, 20:00 8
Незнайка74, покажите ваш код. Подправим.
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
4138 / 2733 / 2171
Регистрация: 22.11.2013
Сообщений: 7,636
31.10.2015, 20:20 9
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Должно быть так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const n=5;
var
  a: array [1..n,1..n] of Integer;
  b: array [1..2*n-1,1..2*n-1] of Integer;
  i, j: Integer;
begin
  Randomize;
  for i:=1 to n do for j:=1 to n do a[i,j]:=Random(100);
  WriteLn('A=');
  for i:=1 to n do begin
    for j:=1 to n do Write(a[i,j]:4); WriteLn;
  end;
  for i:=1 to n do for j:=1 to n do b[i+j-1,n+j-i]:=a[i,j];
  WriteLn('B=');
  for i:=1 to 2*n-1 do begin
    for j:=1 to 2*n-1 do Write(b[i,j]:4); WriteLn;
  end;
end.
1
Незнайка74
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 15
31.10.2015, 23:20  [ТС] 10
Спасибо. Ошибка была в самом конце. Не то выводил во write. Огромное спасибо!!
0
Незнайка74
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 15
09.11.2015, 23:00  [ТС] 11
А как убрать нули?
0
ФедосеевПавел
Модератор
3854 / 2175 / 894
Регистрация: 01.02.2015
Сообщений: 7,248
09.11.2015, 23:21 12
А исходная задача в учебнике звучала как? Случайно не "распечатать диагонали квадратной матрицы в виде ромба"?
0
ZX Spectrum-128
Модератор
Эксперт Pascal/Delphi
4205 / 3059 / 3783
Регистрация: 05.06.2014
Сообщений: 15,358
10.11.2015, 08:44 13
Цитата Сообщение от Незнайка74 Посмотреть сообщение
А как убрать нули?
Просто их не выводить.
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
4138 / 2733 / 2171
Регистрация: 22.11.2013
Сообщений: 7,636
10.11.2015, 10:53 14
Цитата Сообщение от Незнайка74 Посмотреть сообщение
повернуть квадратный массив на угол 45 градусов по часовой стрелке.
Так все же повернуть массив (создать новый) или вывести повернутым существующий?
0
Незнайка74
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 15
10.11.2015, 18:30  [ТС] 15
существующий
0
ФедосеевПавел
Модератор
3854 / 2175 / 894
Регистрация: 01.02.2015
Сообщений: 7,248
10.11.2015, 18:41 16
Попробуете самостоятельно?
Там идея в том, что у диагоналей, идущих вправо-вверх сумма индексов постоянна:
- для 1 диагонали сумма индексов равна 2 = 1+1
- для 2 диагонали сумма индексов равна 3 = 2+1 = 1+2
- для 3 диагонали сумма индексов равна 4 = 3+1 = 2+2 = 1+3
....................
0
10.11.2015, 18:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2015, 18:41

Повернуть квадратную матрицу на угол 180°
Данная квадратная матрица А порядка М. Вернуть ее на угол 180 ° (при этом...

Повернуть матрицу на 180 градусов против часовой стрелки, и найти максимальный четный элемент диагонали
Задан двумерный массив М из 25 чисел: повернуть матрицу на 180 градусов против...

Матрица,повернуть на четверть по часовой стрелке
В матрице А(N,N) все ее элементы повернуть на четверть по часовой стрелке и...


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

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

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