Глава 4. Алгоритмы, использующие двумерные массивы - 4.3. Нахождение элементов с заданным свойством

E-mail Печать PDF
Рейтинг пользователей: / 11
ХудшийЛучший 
Индекс материала
Глава 4. Алгоритмы, использующие двумерные массивы
4.2. Нахождение суммы элементов
4.3. Нахождение элементов с заданным свойством
4.4. Удаление и вставка строк или столбцов матрицы
4.5. Изменение значений элементов, обладающих заданным свойством
4.6. Перестановка строк или столбцов матрицы
4.7. Алгоритмы, реализуемые с помощью вложенных циклов разного типа
Все страницы

4.3. Нахождение элементов с заданным свойством

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

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

Дано: n, m - количество строк и столбцов массива соответственно, массив
Х[n, m].

Найти K[n] - количество отрицательных элементов в каждой строке.

Данные

Результат

N

M

Х

K

2

3

-3     -1     7

        4       3     2

2

0

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

Можно хранить количество отрицательных элементов каждой строки в одномерном массиве соответствующей размерности:

Фрагмент алгоритма в этом случае выглядит так:

нц

Для i от 1 до n выполнить

k[i] = 0

нц

Для j от 1 до m выполнить

Если  x[i, j] < 0 то k[i] = k[i] + 1

Все если

кц

кц

В этом случае для вывода результата используем цикл:

нц

Для i от 1 до n выполнить

    Вывод "В ", i, "- ой строке ", k[i], " отрицательных элементов"

кц

Можно использовать счетчик, находить количество отрицательных элементов строки и сразу выводить найденное значение на экран. В этом случае можно использовать простую переменную.

нц

Для i от 1 до n выполнить

k = 0

нц

Для j от 1 до m выполнить

Если x[i, j] < 0 то k = k + 1

Все если

кц

Вывод "В ", i, " - ой строке ", k, " отрицательных элементов"

кц

Пример 4.4. Найти максимальный элемент массива и его индексы.

Дано: n, m - количество строк и столбцов массива соответственно, массив
А[n, m].

Найти Max - максимальный элемент массива, а также Maxi и Maxj - номер строки и столбца соответственно, на пересечении которых находится максимальный элемент.

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

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

Фрагмент блок-схемы нахождения максимума в двумерном массиве:

 

Тест

Данные

Результат

n

m

A

 

2

3

1  2  5

5  1  5

Max = 5;

Maxi = 1;

Maxj = 3

Исполнение алгоритма нахождения максимума в двумерном массиве.

i

j

A[i, j] > max

Результат

1

1

Нет

Max = 1; Maxi = 1; Maxj = 1

2

Да

Max = 2; Maxi = 1; Maxj = 2

3

Да

Max = 5; Maxi = 1; Maxj = 3

2

1

Нет

 

2

Нет

 

3

Нет

 

Пример 4.5. Вычислить количество элементов заданной целочисленной матрицы A[n, m], равных ее максимальному элементу.

Дано: n, m - количество строк и столбцов массива соответственно, массив
A[n, m].

Найти K - количество элементов, равных максимальному элементу матрицы.

Поставленную задачу можно представить как совокупность двух подзадач: одна из них - это задача нахождения максимального элемента, алгоритм которой нам уже известен, а другая задача - это задача нахождения в матрице элементов, равных ее максимальному элементу.

Задачу можно решить только для целых чисел. Подумайте, почему нельзя использовать вещественные числа.

Тест

Данные

Результат

n

m

A

K

2

3

1  2  5

5  1  5

3

Исполнение алгоритма подсчета количества максимумов:

i

j

A[i, j] = Amax

K

 

 

 

0

1

1

Нет

 

2

Нет

 

3

Да

1

2

1

Да

2

2

Нет

 

3

Да

3

Задачи для самостоятельного решения

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

а) элементов, кратных k1 и k2;

б) элементов, являющихся простыми числами;

в) элементов, попадающих в промежуток от А до В;

г) положительных элементов, лежащих выше главной диагонали.

2. Дана матрица произвольного размера. Найдите сумму элементов в строках с k1-й по k2-ю.

3. Дана матрица произвольного размера. Найдите номера:

а) всех максимальных элементов каждой строки;

б) последних отрицательных элементов строки (столбца).

4. Дана матрица произвольного размера. Найдите количество элементов в каждой строке, меньших (больших) среднего арифметического элемента данной строки.

5. Найдите произведение двух одномерных массивов А и В, если массив А имеет размерность m, а B - n. Укажите размерность результирующего массива и правило нахождения элемента с индексами i и j.

6. Даны две квадратные матрицы - А и В. Выведите на экран ту из них, у которой след (сумма элементов главной диагонали) меньше.



 

Добавьтe Ваш комментарий

Ваше имя (псевдоним):
Ваш адрес почты:
Заголовок:
Комментарий:

Комментарии

Интересное




Похожие материалы

Партнёры