Студопедия

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


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

Порталы:

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



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




Фрагмент программы

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

End

Begin

Фрагмент программы

Преобразования матриц

End

Begin

Фрагмент программы

F:=true;{элемент с четной суммой цифр не найден, т.е. у max нет начального значения}

for i:=1 to k do {для каждой строки матрицы}

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

if(I ³ J) AND (I+j £ N+1)then{если элемент входит в заштрихов. область}

if symm(a[I,j]) then{если сумма цифр в его записи четная}

if f then{если это первый найденный в области элемент с четной суммой цифр}

max:=a[I,J]; {присваиваем его значение максимуму}

f:=false; {изменяем значение флажка, т.к. max теперь имеет значение}

else if max>a[I,J] then max:=a[I,J];{элемент не первый – сравниваем}

end;

writeln(‘Максимум элементов заштрихованной области =‘,max);

Данная группа алгоритмов включает следующие:

1. Преобразование элементов матрицы.

2. Вставка/удаление строк/столбцов.

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

Преобразование элементов матрицы

Пример. Дана квадратная матрица А(K,K) натуральных чисел. Заменить на 0 элементы строки и столбца, на пересечении которых находится минимальный положительный элемент, имеющий четную сумму цифр. Сам минимальный положительный элемент не заменяется.

Решение. Это пример на преобразование элементов. Порядок действий такой:

1. Найти координаты элемента, удовлетворяющего условию (imin,jmin).

2. Заменить на 0 элементы строки imin и столбца jmin, кроме самого минимума – элемента А[imin,jmin].

Для реализации пункта 1 в стандартный алгоритм поиска минимума внесем изменения, как в примере выше, т.е. используем флажок и дополнительную проверку.

{-----------реализация пункта №1-----------}

F:=true;{элемент с четной суммой цифр не найден, т.е. у min нет начального значения}

for i:=1 to k do {для каждой строки матрицы}

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

if(a[I,J]>0)AND(chet(a[I,j])) then{если элемент >0 и имеет четную сумму цифр}

if f then{если это первый удовлетворяющий условию элемент }

min:=a[I,J]; {присваиваем его значение минимуму}

imin:=I; jmin:=j; {запоминаем координаты элемента}

f:=false; {изменяем значение флажка, т.к. min теперь имеет значение}

else if min>a[I,J] then min:=a[I,J];{элемент не первый – сравниваем}

end;

{-----------реализация пункта №2-----------}

for i:=1 to k do ifi<>jmin then a[imin,i]:=0;

for i:=1 to k do ifi<>imin then a[I,imin]:=0;

writeln(‘Результат:‘);

VIVOD(a,k,k);

Вставка/удаление строк/столбцов.

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

Решение. Рассмотрим на примере матрицы 5*5. Для вставки нужно:

1. Найти L – номер строки минимального элемента.

2. Освободить строку L для вставки. Для этого нужно переместить строку L и все ниже расположенные строки на одну вниз. Например, L=3. Тогда перемещаются строки от 3 до 5 и в матрице добавляется строка №6. Перемещение нужно начитать со строки 5,

     
             
             
        Сдвигаем вниз 3-5 строки Новая строка
         
         
         

 

т.к. для нее есть свободное место – это новая строка 6. затем освобождается строка 5 и можно перемещать 4-ю и.т.д. Т.о., строки перемещаются от 5 до L (for i:=N downto L do …) Для перемещения каждой строки необходимо каждый ее элемент переместить, т.е. for j:=1 to N do…

Итак, выполнение п.2 подразумевает использование двух вложенных циклов: внешний перебирает номера перемещаемых строк, внутренний – элементы текущей строки.

3. Присвоить элементам строки L значения элементов массива B.

Заметим, что после вставки количество строк становиться на 1 больше количества столбцов. Это нужно учесть при выводе матрицы.

L:=1;jm:=1;

for i:=1 to N do

поиск for j:=I to N do

максимума if a[L,jm]< a[I,j] then


<== предыдущая страница | следующая страница ==>
Фрагмент программы, реализующий подход №2 | Фрагмент программы. освобождаем for i:=N downto L do {для каждой перемещаемой строки }

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




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