image-
image-
Flag Counter
image-
image-
image-
image-
image-



image-
Урок десятый
Квадратная матрица. Закономерности расположения элементов в квадратной матрице. Обработка квадратной матрицы

Двумерный массив в котором число строк совпадает с числом столбцов называют квадратной матрицей. Рассмотрим закономерности определяющие характерное расположение элементов в квадратной матрице. Очевидно, что для элемента расположенного на главной диагонали номер его строки равен номеру его столбца i = j. Для элемента расположенного на побочной диагонали справедливо i + j = n + 1, где n — размер квадратной матрицы. Проверьте справедливость этого равенства.
Для элементов расположенных выше главной диагонали справедливо утверждение i < j, то есть номер строки элемента обязательно меньше номера его столбца. Для нижних элементов справедливо: i > j. Для верхних элементов побочной диагонали i + j < n + 1 и для нижних i + j > n + 1.
Если рассматривать положение элемента в квадратной матрице относительно обеих диагоналей, то он может находиться в одной из четвертей при условии:

1 четверть — (i < j) And (i + j < n + 1)
2 четверть — (i < j) And (i + j > n + 1)
3 четверть — (i > j) And (i + j > n + 1)
4 четверть — (i > j) And (i + j < n + 1)

В записи условий используется логический оператор And (логическое и). Логическое и требует выполнения обоих условий, в отличии от логического или (оператор Or), который требует выполнения хотя бы одного из условий. Попутно следует сказать еще об одном важном логическом операторе Not (логическое нет).
Решим задачу: сформировать квадратную матрицу 5х5 из случайных целых чисел в диапазоне от 0 до 9 и вычислить сумму ее элементов расположенных на главной диагонали.
В окне для ввода программного кода в общем разделе (general) запишите:

     Dim a(1 To 5, 1 To 5)

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

     Print
     Randomize
     s = 0

     For i = 1 To 5
     For j = 1 To 5
          a (i, j) = Fix (Rnd * 10)
     Next j
     Next i

     For i = 1 To 5
                                            Print
     For j = 1 To 5
          Print a (i, j);
          If i = j Then s = s + a (i, j)
     Next j
     Next i

    Print
     Print "Сумма в главной диагонали ="; s

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

     Dim a(1 To 50, 1 To 50), n
     Cls
     Randomize
100 n = InputBox ("Запишите размер квадратной матрицы")
     If n = "" Then 100
     If n > 50 Or n < 2 Then 100

     For i = 1 To n
     For j = 1 To n
          a (i, j) = Fix (Rnd * 10)
     Next j
     Next i

     For i = 1 To n
                                        Print
     For j = 1 To n
          Print a (i, j);
     Next j
     Next i

Переменная n используется под размер квадратной матрицы. Все циклы будут работать от 1 до n. Метка «100» необходима для того чтобы можно было вернуться к оператору считывания в случае некорректного ввода данных пользователем. Сразу за этой строкой идет два условия защищающие работу программы. Первое условие возвращает к оператору считывания, если пользователь не ввел размер матрицы. Второе условие является сложным, так как применен оператор Or (или). Эта строка-условие читается: если n больше 50-и или меньше 2-х, то иди к сотой строке.
В выше построенной квадратной матрице 20х20 вычислим сумму всех ее элементов, расположенных ниже побочной диагонали. Для этого в общем разделе general объявим переменную s с помощью оператора Dim и после строки закладывающей в ячейки матрицы случайные числа запишем инструкцию:

     If i + j > n + 1 Then s = s + a (i, j)     ‘ условие наращивания суммы

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

     Print "Сумма элементов в побочной диагонали ="; s

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

1. Сформируйте квадратную матрицу размерности 8х8 из случайных однозначных чисел и вычислите сумму ее элементов расположенных на побочной диагонали.
2. Сформируйте квадратную матрицу размерности 10х10 из случайных однозначных чисел и вычислите сумму ее элементов расположенных во второй четверти.
3. Сформируйте квадратную матрицу размерности 7х7 из случайных однозначных чисел и вычислите произведение ее элементов расположенных в четвертой четверти.
4. Сформируйте квадратную матрицу размерности 25х25 из случайных однозначных чисел и вычислите число «восьмерок» выпавших в первой четверти.
Примером квадратной матрицы является удивительный квадрат, который открыли три тысячи лет назад китайские ученые. Размер такого квадрата 3х3, в него входят девять цифр привычной нам десятичной системы счисления кроме нуля. А замечателен он тем, что сумма в нем в любых строках, столбцах и обеих диагоналях равна одному и тому же числу, причем ни в одной ячейке цифры не повторяются!
image-
Азбука Visual Basic © BigCamagan
создать сайт бесплатно