Студопедия

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


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

Порталы:

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



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




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

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

Begin

BEGIN

Begin

Begin

Begin

Var

Type

Программа.

Program matr;

Const N=100; {максимальное количество строк}

M=50; {максимальное количество столбцов}

Mass = ARRAY [1..M] of integer;

matrix = ARRAY [1..N] of mass;{массив из массивов}

I,j,a,b,k,l,ks,kol: integer;

B: matrix; {идентификатор матрицы}

{-----------процедура ввода матрицы------------}

Procedure VVOD(var x:matrix; k,l,a,b:integer);

randomize;

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

For j:=1 to l do{для каждого элемента строки матрицы,т.е.для каждого столбца}

x[I,j]:=a + (b-a)*random; {получение очередного элемента}

End;

{-----------процедура вывода матрицы------------}

Procedure VIVOD (x:matrix; k,l:integer);

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

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

write(x[I,j]:7:2);{выполнить вывод элементов строки}

writeln;

end;

end;

{------здесь функция проверки простоты числа prost(a:integer):Boolean-----}

Write(‘введите количество строк’);readln(k);

Write(‘введите количество столбцов’);readln(L);

Writeln(‘введите диапазон значений элементов:’);

Write(‘a=’); readln(a);

Write(‘b=’); readln(b);

Vvod(b,k,l,a,b);

Writeln(‘исходная матрица:’); Vivod(b,k,l);

ks:=0;

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

kol:=0;

for j:=1 to l do

if prost(b[I,j]) then kol:=kol+1;

if kol > l div 2 then ks:=ks+1;

end;

writeln(‘Строк,в которых более половины простых чисел ‘,ks);

end.

 

Пример 2. Дана квадратная матрица А(K,K) натуральных чисел, принадлежащих [a,b]. Найти максимум среди элементов, лежащих в заштрихованной области. Элементы, расположенные на границах области, входят в заштрихованную часть.

Решение. Требования предъявляются к месту расположения элемента. Подход №1: организовать перебор всех элементов матрицы (for i:=1 to k do for j:=1 to L do …). Для каждого выполнять проверку на принадлежность заштрихованной области. Если элемент ей принадлежит, то выполняется сравнение с max.

Для определения принадлежности элемента заштрихованной области рассмотрим, матрицу 5*5. Область образована пересечением главной и побочной диагоналей: на главной и ниже и на побочной и выше. Изобразим диагонали на рисунке и затем выпишем координаты элементов главной диагонали и попытаемся определить их общее свойство. Потом повторим действия для элементов побочной.

B Размерность K=5 Главная Побочная
1,1       1,5 Побочная диагональ (1,1) (1,5) (заметим, что 1+5 =6)
  2,2   2,4     (2,2) (2,4) (заметим, что 2+4=6)
    3,3       (3,3) (3,3) (3+3=6, т.е. K+1)
  4,2   4,4     (4,4) (4,2) (4+2=6, т.е. K+1)
5,1       5,5 Главная диагональ (5,5) (5,1) (5+1=6, т.е. K+1)
                I+j = N+1

Заметим, что у элементов главной диагонали номер строки I равен номеру столбца J. Т.о., условие принадлежности элементов к главной диагонали – I = J (условие 1).

У элементов, составляющих побочную диагональ, также есть общее свойство – сумма их индексов равна одному и тому же числу. В данном случае это число 6. Оно получается, если к размерности матрицы К добавить 1. Т.о., условие принадлежности элементов к побочной диагонали – I+j = K+1 (условие 2).

Заданная условием область получается из элементов, расположенных ниже главной диагонали и выше побочной и элементами самих диагоналей.

Определим соотношение для элементов, находящихся ниже главной диагонали. Проанализируем индексы одного из таких элементов, например (3,1), т.е. I=3, J=1. Видим, что индекс строки больше индекса столбца, поэтому условие 1 изменятся так: I > J (условие 3).

Теперь определим соотношение для элементов, находящихся выше побочной диагонали. Проанализируем элемент (2,3), т.е. I=2, J=3. Если подставить эти значения в условие 2, то знак «=» нужно изменить на «<», т.к. 2+3 < 5+1. Т.о., условие элементов, расположенных выше побочной диагонали – I+j < K+1 (условие 4).

Т.к. в условии сказано, что элементы, расположенные на границах области, входят в заштрихованную часть, то строгое > условия 3 необходимо заменить на ³, а строгое < условия 4 – на £.

Итоговое выражение, отвечающее на вопрос о принадлежности элемента заштрихованной области, получается путем связывания полученных условий логической операцией AND (И или логическое умножение):

(I ³ J) AND (I+j £ K+1)

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

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


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

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




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