Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Фрагмент программы. освобождаем for i:=N downto L do {для каждой перемещаемой строки }

Читайте также:
  1. Альтернатива выбора производственной программы
  2. Базовый синтаксис С#. Структура программы
  3. Воплощение образа в ходе ведения досуговой программы и анализ результативности.
  4. Говоря о наборе и верстке текста, невозможно не коснуться Microsoft Word - многофункциональной программы обработки текстов.
  5. Движения декабристов. Их программы.
  6. Дизайн-программы
  7. Для оказания медицинской помощи в рамках базовой программы ОМС.
  8. Долгосрочные социальные программы
  9. Из программы учредительного съезда Всероссийского мусульманского союза, принятой 30 декабря 1905 года
  10. Извлечение из рабочей программы дисциплины

Begin

L:=I; jm:=j

end;

освобождаем for i:=N downto L do {для каждой перемещаемой строки }

строку L for j:=1 to N do {для каждого столбца очередной строки}

a[i+1,j]:=a[I,j];

for j:=1 to N do [L,j]:=b[j];{вставка массива В}

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

При удалении строк/столбцов нужно затереть элементы удаляемой строки/столбца. Это будет осуществляться перемещением строк/столбцов, имеющих большие номера, т.е. в обозначениях примера – от L до N.

Перестановка элементов

Пример. Дана квадратная матрица А(N,N) натуральных чисел. Повернуть ее относительно центра симметрии на 90° по часовой стрелке.

Решение. Это пример на преобразование матрицы. В задачах такого типа необходимо выявить закономерность перебора элементов. Для этого нужно нарисовать матрицу и детально расписать процесс преобразования. Рассмотрим матрицу 6*6.

 
           
           
           
           
           
           

 

Рассмотрим, как поворачиваются элементы. В строке №1 это элементы, выделенные цветом: 1,1 ® 1,6 ® 6, 6 ® 6, 1 ® 1,1 1,2 ® 2,6 ® 6, 5 ® 5, 1 ® 1,2 1,3 ® 3,6 ® 6, 4 ® 4, 1 ® 1,3 1,4 ® 4,6 ® 6, 3 ® 3, 1 ® 1,4 1,5 ® 5,6 ® 6, 2 ® 2, 1 ® 1,5 Итого: 1,j ® j,6 ® 6,6-j+1® 6-j+1,1® 1,j

Здесь 6 – это значение N. Причем для строки №1 значение J изменяется от 1 до 5. Причем заметим, что при перемещение одного элемента вместе с ним перемещаются на новые места еще 3. Т.о., за одно перемещение мы будем ставить на место сразу 4 элемента. Поэтому перебирать нужно не все элементы матрицы, а четвертую часть от их полного количества.

Элемент 1,6 перемещать не нужно, т.к. он уже перемещен.

Строка №2 (перемещаются выделенные элементы):

2,2 ® 2,5 ® 5, 5 ® 5, 2 ® 2,2

2,3 ® 3,5 ® 5, 4 ® 4, 2 ® 2,3

2,4 ® 4,5 ® 5, 3 ® 3, 2 ® 2,4

Итого: 2,j ® j,5 ® 5,6-j+1® 6-j+1,2® 2,j

Причем для строки №2 значение J изменяется от 2 до 4, 6 – это значение N.

Строка №3:

3,3 ® 3,4 ® 4,4 ® 4,3 ® 3,3

Итого: 3,j ® j,4 ® 4,6-j+1® 6-j+1,3® 3,j

Причем для строки №3 значение J изменяется от 3 до 3, 6 – это N.

Остальные элементы занимают свои места в процессе перемещения выделенных на рисунке. Если организовать перебор только выделенных на рисунке строк и для каждого из них организовать перемещение, то вся матрица будет повернута.

Сопоставим итоговые строки для выявления закономерности:

1,j ® j,6 ® 6,N-j+1 ® N-j+1,1 ® 1,j

2,j ® j,5 ® 5,N-j+1 ® N-j+1,2 ® 2,j

3,j ® j,4 ® 4,N-j+1 ® N-j+1,3 ® 3,j

I,j ® j,N-i+1® N-i+1,N-j+1 ® N-j+1,I ® I,j

Т.о., строки I перебираются от 1 до 3 (N div 2), а для каждой строки перебираются элементы от I до N – I . Перебор выделенных элементов описывается двумя вложенными циклами.

Перемещение будем начинать с элемента А[I,J]. Его присвоим дополнительной переменной d: d:=a[I,j]; Теперь место A[I,J] свободно.

Поэтому следующим действием присвоим элементу A[I,J] значение элемента [J,N-I+1]: a[I,j]:=a[n-j+1,i];

Теперь свободно место A[J,N-I+1]. Поэтому следующее действие:
a[n-j+1,i]:=a[n-i+1,n-j+1];

Далее аналогичные действия для A[N-I+1,N-J+1]:
a[n-i+1,n-j+1]:=a[j,n-i+1];

Последнее действие – это поставить значение элемента А[I,J], которое находится в d, на место A[J,N-I+1]: a[j,n-i+1]:=d;

for i:=1 to N div 2 do {для каждой выделенной строки матрицы}

for j:=i to N-i do {для выделенного столбца очередной строки}


<== предыдущая страница | следующая страница ==>
Фрагмент программы | Формирование матриц

Дата добавления: 2014-03-11; просмотров: 307; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.005 сек.