Одномерный массив можно представить как таблицу, содержащую одну строку или столбец данных. Однако нам часто приходится работать с таблицами, в которых несколько строк и несколько столбцов. Для обработки данных таких таблиц удобно использовать двумерный массив. Каждый элемент такого массива определяется двумя индексами.
В виде двумерного массива можно представить стулья в зале кинотеатра, где каждый стул определяется двумя индексами — номером ряда и номером стула в ряду. В виде двумерного массива легко представить поле шахматной доски или популярной компьютерной игры Сапер. Матрица экрана вашего монитора также является двумерным массивом пикселей.
Описание переменных типа двумерный массив
Двумерный массив — это прямоугольная таблица, в которой N строк и М столбцов. Элемент, расположенный на пересечении i-й строки и j-го столбца массива А, обозначают A[i,j].
Рассмотрим пример двумерного массива (рис. 38.1).
В массиве, заполненном таким образом:
А[1,1] = 7; А[2,3] = 0; А[3,2] = 3.

Элементы двумерного массива, для которых i = j, образуют главную диагональ.
Описать переменную типа двумерный массив можно двумя способами:

Присвоение значений элементам двумерного массива
Последовательно получить доступ ко всем элементам двумерного массива можно с помощью вложенных циклов.

Вывод значений элементов двумерного массива
Алгоритм вывода значений элементов двумерного массива:
1) для каждой i-й строки массива создать пустую строку S;
2) перебрать элементы i-й строки: каждый элемент строки преобразовать в строковый тип и добавить к строке S с добавлением пробела;
3) добавить строку S в список ListBox.
Полученные строки можно выводить не только в поле списка ListBox, но и в поле Memo или другим способом.
Вывести значения элементов массива A[1..3, 1..4] в поле списка ListBox.

Использование компонента StringGrid при работе с двумерными массивами
В ходе работы с элементами двумерного массива важно, чтобы они >тображались в виде прямоугольной таблицы. Это позволяет представить юдержимое и структуру массива. Именно поэтому удобно пользоваться сомпонентом StringGrid.
Расположенный на пересечении i-й строки и j-го столбца элемент массива Name обозначают Name[i,j], а ячейку таблицы StringGrid — StringGrid1.Cells[j,i]. То есть при обращении к ячейкам таблицы StringGrid первым индексом является номер столбца, а вторым — номер строки.
Создать на форме объект StringGridl (рис. 38.3), свойства которого настроить для вывода массива из трех строк и четырех столбцов (RowCount = 4, ColCount = 5).
Вывод номеров строк и столбцов запрограммирован в процедуре FormCreate:


Ввести с клавиатуры значения элементов массива А[1 ..3, 1..4] и вывести значения элементов массива в таблице StringGrid.


Вопросы для самопроверки
1. Опишите двумерный массив целых чисел из 5 строк и 8 столбцов.
2. Как запрограммировать ввод значений элементов двумерного массива с клавиатуры?
3. Как заполнить двумерный массив случайными числами?
4. Определите, что содержится в таблице А[1..4, 1..5], если:
а) A[i,j] = i; б) A[i,j] = Maxjij};1 в) A[i,j] = Min{i,j}; г) A[i,j] = |i-j|.
5. Запишите фрагмент программы, позволяющей создать массив:

6. В ходе изучения темы 10 учащихся получили оценки по 5 тестам. Составьте программу для определения суммы баллов, набранной каждым учащимся.
Упражнение 38
Магический квадрат — это квадратная таблица (N = M), в которой суммы чисел каждого ряда (строки, столбца и диагонали) равны.
Составить программу, в которой игрок должен заполнить ячейки квадрата 3x3 числами от 4 до 12 так, чтобы получить магический квадрат. 1) Создайте новый проект. Разместите на форме компоненты и настройте их свойства (рис. 1).

2) Опишите глобальные массивы данных:

3) В процедуре обработки события onclick для кнопки Новая игра запрограммируйте вывод случайным образом трех значений из массива Numbers в таблицу StringGridl:

4) В процедуре обработки события onclick для кнопки Проверить запрограммируйте вывод значений массива mk в таблицу StringGrid1 и вычисление сумм элементов в строках. Если числа расположены правильно, то сумма чисел каждой строки равна 24. Если очередная сумма не равна 24, переменная Prap приобретает значение False. var i, j, k, n, sum_row, sum_col: Integer; Prap: Boolean;

5) Запрограммируйте проверку сумм элементов в столбцах. Если после вычисления всех 6 сумм переменная Prap не изменила значение, то квадрат заполнен правильно (рис. 2):

6) Проверьте работу программы. Всегда ли первоначальное расположение чисел позволяет заполнить магический квадрат? Сохраните проект в папке Упражнение 38. Завершите работу за компьютером.
Компьютерное тестирование
Выполните тестовое задание 38 с автоматической проверкой на сайте interactive.ranok.com.ua.

Это материал из учебника Информатика 9 класс Бондаренко