Flag Counter



Урок девятый
Двумерный массив. Обработка двумерного массива

Мы постоянно сталкиваемся с двумерными массивами. Далеко ходить не надо: посмотрите на экран Вашего дисплея – его матрица не что иное как двумерный массив размером, например, 1024х768 точек. Вспомните старую мудрую шахматную доску или знаменитую компьютерную игру «Цветные линии». Примером квадратной матрицы является также удивительный квадрат, который открыли три тысячи лет назад китайские ученые. Размер такого квадрата 3х3, в него входят девять цифр привычной нам десятичной системы счисления кроме нуля. А замечателен он тем, что сумма в нем в любых строках, столбцах и обеих диагоналях равна одному и тому же числу, причем ни в одной ячейке цифры не повторяются! Настоящий программист получает истинное наслаждение в работе с матрицами.
Сформируем двумерный массив размером 15х10, состоящий из случайных чисел в диапазоне от 0 до 9. Запустите Visual Basic. На форме Form1 разместите электронную кнопку Command1. В окне для ввода программного кода в общем разделе (general) запишите строку объявляющую двумерный массив a:

     Dim a (15, 10)     ‘ резервирование памяти для двумерного
                               ‘ массива a на 150 элементов

В процедуре Command1_Click разместите следующий программный код:

     Print
     Randomize

     For i = 0 To 14     ‘ внешний цикл i для 15-и строк
          For j = 0 To 9     ‘ внутренний цикл j для 10-и столбцов
               a (i, j) = Fix (Rnd * 10)     ’ заполнение массива случайными числами
          Next j     ‘ конец внутреннего цикла j
     Next i     ‘ конец внешнего цикла i

     For i = 0 To 14
                                        Print
          For j = 0 To 9
              
Print a (i, j);     ‘ вывод элементов массива a на экран
          Next j
     Next i

Здесь i это номер строки, а j это номер столбца. Запустите программу на выполнение. Здесь дважды используются вложенные циклы: создание двумерного массива и вывод последнего на экран.
Самостоятельно создайте двумерный массив с размерностью 20х5 и выведите его на экран.
Заполним массив размерности 15х10 случайными всевозможными двузначными числами. Будет достаточно изменить строку заполняющую массив случайными числами:

     a (i, j) = Fix (Rnd * 90) + 10

Запустите программу на выполнение. Внимательно посмотрите и разберитесь как эта строка формирует случайные двузначные числа в диапазоне от 10 до 99. Попробуйте изменить в этой инструкции число 10, а затем число 90!
Займемся обработкой двумерного массива размерностью 4х5. Найдем сумму случайных чисел в третьей строке. Так как нумерация строк идет от 0 до 3, то третья строка будет иметь номер 2.
В окне для ввода программного кода в общем разделе (general) запишите строку объявляющую две переменные:

     Dim a (4, 5), s

В процедуре Command1_Click разместите следующий программный код:

    Print
     Randomize
     s = 0     ‘ обнуление переменной s

     For i = 0 To 3
     For j = 0 To 4
          a (i, j) = Fix (Rnd * 10)
     Next j
     Next i

     For i = 0 To 3
                                        Print
     For j = 0 To 4
          Print a (i, j);
          If i = 2 Then s = s + a (i, j)     ‘ суммирование элементов третьей строки
     Next j
     Next i

     Print
     Print "Сумма в третьей строке ="; s

Строка условия If (Если) накапливает сумму в переменную s при условии если номер строки i равен двум, то есть номеру третьей строки. Протестируйте программу.
Усложним предыдущую задачу. Кроме суммы в третьей строке, нужно найти еще и сумму элементов массива в четвертом столбце, а также вычислить общую сумму всех элементов двумерного массива. Необходимо будет использовать три переменных. Для всей суммы переменную s, для сумм в третьей строке и четвертом столбце отдельно, например, переменные s1 и s2.
В общем разделе (general) запишите строку объявляющую все переменные:

     Dim a (4, 5), s, s1, s2

В процедуре Command1_Click разместите следующий программный код:

     Print
     Randomize
     s = 0
     s1 = 0
     s2 = 0

     For i = 0 To 3
     For j = 0 To 4
          a (i, j) = Fix (Rnd * 10)
     Next j
     Next i

     For i = 0 To 3
                                                     Print
     For j = 0 To 4
          Print a (i, j);
          s = s + a (i, j)
          If i = 2 Then s1 = s1 + a (i, j)     ‘ суммирование элементов 3-ей строки
          If j = 3 Then s2 = s2 + a (i, j)     ‘ суммирование элементов 4-го столбца
     Next j
     Next i

     Print
     Print "Сумма всех элементов массива ="; s
     Print "Сумма в третьей строке ="; s1
     Print "Сумма в четвертом столбце ="; s2

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

Домашнее задание

1. Сформируйте двумерный массив размером 5х8, состоящий случайных трехзначных чисел в диапазоне от 100 от до 999.
2. В массиве предыдущего задания вычислите сумму всех элементов массива, сумму элементов во второй строке и сумму в седьмом столбце.
3. В массиве первого задания определить число элементов меньших ста.
4. В массиве первого задания вычислите общую сумму элементов второго и третьего столбцов.
5. Постройте программу отыскивающую максимальный элемент в двумерном массиве случайных целых чисел.
Азбука Visual Basic © BigCamagan
создать сайт бесплатно