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) замените элементы, стоящие ниже главной диагонали, нулями.
279. В массиве R (5x5) замените элементы главной диагонали нулями.
280. В массиве R (5x5) вычислите сумму элементов главной диагонали.
281. В массиве R (5x5) упорядочьте строки по возрастанию элементов главной диагонали.
282. Определите, является ли заданный массив 3x3 магическим квадратом, т. е. таким, суммы элементов которого в строках, столбцах и главных диагоналях равны между собой.
283. Выведите на экран номера строк массива 5x5, сумма элементов которых четна.
284. Выведите на экран изображение Андреевского флага, если у данного массива 5x5 суммы элементов диагоналей равны, и флаг Японии — в обратном случае (рис. 1.72, 1.73).

Рис.1.72. Андреевский флаг (суммы элементов диагоналей равны)

Рис.1.73. Флаг Японии (суммы элементов диагоналей не равны)

285. Одномерный массив из N элементов свернуть по спирали в квадратную матрицу размерностью корень квадратный из N по следующему образцу.
286. Исходный массив Sl(16) состоит из следующих элементов: 3, 5, 9, 7, 12, 34, 21, 13. 6, 89, 54, 66, 2, 10, 99, 55.
Создайте массив S2(4, 4), вид которого представлен на рис. 1.74.

Рис.1.74. Преобразованный в спираль одномерный массив

Назад Начало Вперед