Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Фрагмент программы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,
Итак, выполнение п.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
Дата добавления: 2014-03-11; просмотров: 333; Нарушение авторских прав Мы поможем в написании ваших работ! |