Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2014, 23:15   #11
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Опишу сам алгоритм. Не построчно.
Нужно поменять местами 2 подматрицы. Они находятся в одних и тех же строках матрицы, но в разных столбцах. Левый верхний угол второй подматрицы на k элементов правее левого верхнего угла первой подматрицы. Само k рассчитывается просто: если матрица четной ширины, то это половина ширины, а если нечетна - половина ширины плюс один. Теперь нужно определить вертикальный размер подматрицы. Он равен половине высоты матрицы и не меньше 1. Осталось только "пробежаться" по элементам первой подматрицы и менять соответствующие элементы местами.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 27.02.2014, 23:28   #12
Виталик124
Пользователь
 
Регистрация: 08.02.2014
Сообщений: 37
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Опишу сам алгоритм. Не построчно.
Нужно поменять местами 2 подматрицы. Они находятся в одних и тех же строках матрицы, но в разных столбцах. Левый верхний угол второй подматрицы на k элементов правее левого верхнего угла первой подматрицы. Само k рассчитывается просто: если матрица четной ширины, то это половина ширины, а если нечетна - половина ширины плюс один. Теперь нужно определить вертикальный размер подматрицы. Он равен половине высоты матрицы и не меньше 1. Осталось только "пробежаться" по элементам первой подматрицы и менять соответствующие элементы местами.
а если я хочу поменять местами 1 и 3-ий квадрат?
Виталик124 вне форума Ответить с цитированием
Старый 27.02.2014, 23:50   #13
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Не рассматривая случай матрицы с высотой 1.
Код:
x := m div 2 + m mod 2;
y := n div 2 + n mod 2;
for i := 1 to n div 2 do
  for j := 1 to m div 2 do
  begin
    b := a[i, j];
    a[i, j] := a[i + y, j + x];
    a[i + y, j + x] := b;
  end;
То есть опять же, пробегаем по 1 подматрице, а с помощью сдвигов попадаем в нужный квадрат.
Ой, я поменял 1 и 4 квадраты Но, может быть, так будет понятнее.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 28.02.2014, 00:01   #14
Виталик124
Пользователь
 
Регистрация: 08.02.2014
Сообщений: 37
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Не рассматривая случай матрицы с высотой 1.
Код:
x := m div 2 + m mod 2;
y := n div 2 + n mod 2;
for i := 1 to n div 2 do
  for j := 1 to m div 2 do
  begin
    b := a[i, j];
    a[i, j] := a[i + y, j + x];
    a[i + y, j + x] := b;
  end;
То есть опять же, пробегаем по 1 подматрице, а с помощью сдвигов попадаем в нужный квадрат.
Ой, я поменял 1 и 4 квадраты Но, может быть, так будет понятнее.
Спасибо! Круто!
Виталик124 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В каждой строке матрицы А(n*n) найти наибольший и наименьший элементы матрицы и поменять их местами saha1994 Паскаль, Turbo Pascal, PascalABC.NET 2 15.05.2012 20:38
Поменять местами столбцы матрицы по правилу. Leshii Общие вопросы C/C++ 4 28.04.2012 18:58
Поменять местами K-ю строку и K-й столбец квадратной матрицы VoltZZZ Паскаль, Turbo Pascal, PascalABC.NET 2 14.03.2012 14:50
Поменять местами диагональные элементы матрицы и вектор Элеонор Помощь студентам 1 29.05.2011 08:28
Паскаль! поменять местами максимальный и минимальный элемент матрицы. wrmarw Помощь студентам 4 08.05.2010 13:06