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