Студопедия

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


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

Порталы:

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



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




Фрагмент программы, реализующий подход №2

Читайте также:
  1. III. Отечественные подходы к классификации групп.
  2. Азиатский подход
  3. Анализ подходов в трактовке причин девиантного поведения.
  4. Биогеографические подходы к оценке биоразнообразия.
  5. Власть и управление в организации: системный структурно-функциональный подход
  6. Вопрос 16. Основные социологические подходы к анализу общества как системы.
  7. Вопрос 18. Какие типологии общества вы знаете? В чем суть формационного и цивилизационного подхода к типологизации общества?
  8. Второй подход: логико-методологический.
  9. Выход из строя и возвращение в строй, подход к начальнику и отход от него.
  10. Гегелевский подход

Begin

for j:=1 to k do

if(I ³ J) AND (I+j £ k+1) then

if max>a[I,J] then max:=a[I,J];

end;

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

 

Подход №2: организовать перебор только элементов заштрихованной области. Для этого нужно определить границы перебираемой области для каждой строки. Из рисунка матрицы видно, что во всех строках перебор нужно начинать с первого столбца, а заканчивать по-разному: для строк от 1 до 3 заканчивать нужно элементом главной диагонали (у которого I=J), а для строк от 4 до 5 – элементом побочной (I+J=К+1). Поэтому разобьем область на два треугольника:

верхний: строки от 1 до K div 2+1, столбцы от 1 до I-го

нижний: строки от K div 2+2, столбцы от 1 до K+1-I -го

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

max:=a[1,1];{начальное значение max=a[1,1], т.к. этот элемент принадлежит области}

for i:=1 to k div 2 + 1 do {для каждой строки верхнего треугольника}

for j:=1 to I do

if max>a[I,J] then max:=a[I,J];

end;

for i:=1 to k div 2 + 2 do {для каждой строки нижнего треугольника}

for j:=1 to k+1-I do

if max>a[I,J] then max:=a[I,J];

end;

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

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

Вспомним, что для максимума нужно задать начальное значение. Теперь мы не знаем, где в заштрихованной области расположен элемент с четной суммой цифр и есть ли он там вообще. Поэтому введем переменную-флажок, которая будет сохранять значение True, пока не найден первый элемент, удовлетворяющий условию, а после его обнаружения будет менять значение на False. Именно этот элемент и будет начальным значение максимума.


<== предыдущая страница | следующая страница ==>
Фрагмент программы, реализующий подход №1 | Фрагмент программы

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




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