Ваш браузер устарел. Рекомендуем обновить его до последней версии.




 



 


Delphi

 

 


 

Урок десятый

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

Двумерный массив в котором число строк совпадает с числом столбцов называют квадратной матрицей. Примером квадратной матрицы является удивительный квадрат, который открыли три тысячи лет назад китайские ученые. Размер такого квадрата 3х3, в него входят девять цифр привычной нам десятичной системы счисления кроме нуля. А замечателен он тем, что сумма в нем в любых строках, столбцах и обеих диагоналях равна одному и тому же числу, причем ни в одной ячейке цифры не повторяются!

Рассмотрим закономерности определяющие характерное расположение элементов в квадратной матрице. Очевидно, что для элемента расположенного на главной диагонали номер его строки равен номеру его столбца 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 из случайных однозначных чисел и вычислите число «восьмерок» выпавших в первой четверти.

Flag Counter
Яндекс.Метрика
200stran.ru: показано число посетителей за сегодня, онлайн, из каждой страны и за всё время
Besucherzahler russain brides
счетчик посещений

Выбери лучшее!

allbest