Иллюстрированный самоучитель по Basic, вводный курс

Двумерные массивы

Что такое двумерный массив? Это такой набор однотипных данных, местоположение каждого элемента которого определяется не одним индексом, а двумя. Например, для тех, кто с детства играл в "морской бой", не будет открытием, что каждая клеточка игрового поля обозначается двумя символами – буквой и цифрой, например, А5 – "мимо", И10– "попал", Ж7 – "убит". Только в Бейсике принято в качестве индексов использовать все же целые числа. Жизненный пример применения двумерных массивов – билеты в кино или театр, имеющие для каждого зрителя две координаты – ряд и место.

Описываются подобные массивы в Бейсике тем же оператором dim, после которого в скобках указываются две размерности массива – количество строк и количество столбцов. Например, массив 5x3 объявим так:

DIM X(5, 3)
X (If 1) X [1, 2) X (1, 3) X (1. 4) X (1, 5)
X (2, 1) X (2, 2) X (2, 3) X (2, 4) X (2, 5)
X (3, 1) X (3, 2) X (3, 3) X (3, 4) X (1, 5)

Кстати, маленькое лирическое отступление. Откуда пошла традиция указывать на билетах ряд и место? Оказывается из Франции. Когда тамошние дворяне при шпагах и гордом характере приходили в театр, имея просто билет без указания места, то нередко возникали смертоубийственные стычки из-за этих самых мест. Королю это надоело, и он обратился за помощью к ученому Декарту, который и предложил систему – "ряд-место". Эта система в дальнейшем трансформировалась в привычную нам декартову систему координат – ось X, ось Y.

Заполнение двумерных массивов и вывод их на экран

В обработке двумерных массивов есть своя специфика – использование вложенных циклов.

Заполним двумерный массив Х(3, 5) целыми случайными числами, лежащими в интервале от 1 до 20 и выведем массив на экран в виде таблицы.

CLS: RANDOMIZE TIMER DIM X(3, 5) FOR I =1 ТО 3 FOR J=l TO 5
X(I, J)=INT(RND(l)*20)+l? X(I, J); NEXT J
NEXT I

На что надо обратить внимание. Для начала, при выводе массива во внутреннем цикле после оператора print стоит точка с запятой. Это дает возможность отображать массив построчно. А оператор print без параметров, указанный после внутреннего цикла, позволяет после вывода каждой строки элементов массива, переводить курсор на новую строчку.

272. Найдите в массиве из приведенного выше примера максимальный и минимальный элемент, и, при выводе массива на экран, выделите их красным цветом.

273. Дан двумерный массив 5x5. Определите сумму элементов каждой строки и ту строку, в которой сумма элементов максимальна.

274. Дан массив А(2, 10). В первом столбце содержатся координаты X точек плоскости экрана, а во втором столбце – координаты Y тех же точек. Определите количество точек, попадающих в нижнюю правую четверть экрана, выведите их на экран, а искомые точки выделите другим цветом.

275. Определите наименьший элемент в массиве Х(10, 10). Выделите его другим цветом.

276. Дан массив W$(5, 4), в котором каждая строка состоит из четырех символов, составляющих английское слово. Отсортируйте массив таким образом, чтобы слова были расположены по алфавиту.

277. В массиве R (5x5) поменяйте местами первую и последнюю строки.

278. В массиве R (5x5) замените элементы, стоящие ниже главной диагонали, нулями.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.