Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Нахождение количества элементов с данным свойством



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

Задача 1. Найти максимальный элемент массива и его индексы.

Так как элементы могут повторяться, то договоримся, что будем запоминать только индексы первого максимального элемента. Опишем процедуру, которой передается массив, и ее результатом является значение максимального элемента и индексы первой встречи такого значения.

Procedure Maximum(X: MyArray; n, m: integer; Var Max, Maxi, Maxj: integer); Var i, j: integer; Begin Max:= X[1, 1]; {Предположим, что максимумом является первый элемент} Maxi:= 1; {в этом случае запомним первую строку} Maxj:= 1; {и первый столбец} for i:= 1 to n do for j:= 1 to m do if X[i, j] > Max {если среди элементов массива нашелся больший элемент, то} then begin Max:= X[i, j];{внесем новое найденное значение в переменную Мах} Maxi:= i; {и не забудем запомнить индексы строки} Maxj:= j; {и столбца этого элемента} end; End;

Задача 2. Найти количество отрицательных элементов в каждой строке.

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

Способ 1 - количество элементов каждой строки хранить в одномерном массиве (Y) соответствующей размерности. Тогда можно описать такую процедуру:

Procedure KolOtr1(X: MyArray2; n, m: integer; Var Y: MyArray1); Var i, j: integer; Begin for i:= 1 to n do begin Y[i]:= 0; {записываем начальное значение количества элементов в соответствующую столбцу ячейку} for j:= 1 to m do if X[i, j] < 0 {если отрицательный элемент найден} then Inc(Y[i]); {то увеличиваем текущее значение на единицу} end; End;

Способ 2 - использовать счетчик, находить количество элементов строки и выводить значение на экран.

Procedure KolOtr2(X: MyArray2; n, m: integer); Var i, j, k: integer; Begin for i:= 1 to n do begin k:= 0; for j:= 1 to m do if X[i, j] < 0 then Inc(k); writeln(i,' - ', k); end; End;

Вопрос. Сравните предложенные способы решения задачи. Какой способ Вам понравился больше и почему?





Дата публикования: 2015-10-09; Прочитано: 320 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...