Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Двумерные массивы.doc
Скачиваний:
5
Добавлен:
26.11.2018
Размер:
152.58 Кб
Скачать

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