Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по VB.doc
Скачиваний:
28
Добавлен:
12.11.2018
Размер:
2.66 Mб
Скачать
      1. Типовые задачи на обработку двумерных массивов

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

Вычисления подобного рода осуществляются при помощи стандартных приемов, особенность которых заключается в организации вложенных циклов при обработке массивов:

For i := a1 To b1 For j := a2 To b2 . . . . . . Next j Next i

Цикл, который содержит другой цикл называют внешним циклом, а цикл, содержащийся в теле другого цикла, называют внутренним. Все операторы внутреннего цикла должны полностью располагаться в теле внешнего цикла.

Всякий раз, когда внутренний цикл завершается, внешний цикл увеличивает значение своего счетчика на 1, и внутренний цикл выполняется вновь.

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

Пример 1. Заполнить двухмерный массив размерностью n * m случайными целыми числами из диапазона [-40,40]. Определить:

  • сумму элементов каждой строки;

  • максимальные значения для каждого столбца;

  • произведение элементов k-ой строки, значения которых лежат в диапазоне от 20 до 40.

Фрагмент программного кода:

Dim i As Integer,j As Integer,s As Integer

Dim max As Integer,k As Integer,p As Integer

Dim flag As Boolean

Dim a(1 To 30, 1 To 30) As Integer

'Очистка текстовых окон

Edit4.Text="": Edit5.Text="": Edit6.Text=""

'Вычисление сумм элементов в каждой строке

For i=1 To n 'Цикл по строкам

s=0;

For j=1 To m

s=s+a(i,j); 'Суммирование элементов i-ой строки

Next J

Edit4.Text= Edit4.Text+Str(s)+ " " 'Вывод суммы i-ой строки

Next i

'Вычисление максимальных элементов в каждом столбце

For j=1 To m 'Цикл по строкам

max=a(1,j) 'Установка начального максимума по первому элементу

'в j-ом столбце

For i=1 To n 'Цикл по строкам

If a(i,j) > max Then max=a(i,j)

Next i

'Вывод максимального элемента j-го столбца

Edit5.Text= Edit5.Text+Str(max)+ " "

Next j

'Вычисление произведения элементов k-ой строки, попавших в диапазон [20,40]

k=Val(Edit3.Text) 'Ввод номера строки

p=1

flag=false 'Предполагаем, что нет элементов, попавших в диапазон [20,40]

For j=1 To m 'Цикл по столбцам

If (a(k,j)>20) and (a(k,j)<40)Then 'Проверка условия попадания

'в диапазон [20,40]

p=p*a(k,j): flag=True

End if

Next j

'Если есть элементы из промежутка [20,40], то выводится их произведение, иначе

'выводится сообщение

If flag Then

Edit6.Text = Str(p)

Else

Edit6.Text = "Таких элементов нет"

End if