Site icon Обучение программированию с нуля

delphi двумерный массив

delphi двумерный массив

Delphi 7. Занятие 1_6.

Двумерный массив. Постановка задачи

Рассмотрим для начала, как организовать и использовать двумерный массив, в частности двумерный массив строк.

В предыдущем занятии мы рассмотрели, как создать в delphi одномерный массив чисел для хранения значений целого типа (Одномерные массивы в delphi)

Объявим теперь массив, хранящий строковые значения.

var vArr[0..1] of string;

и заполним его такими, например, значениями:

vArr[0] :='Столбец 1'; vArr[1] :='Столбец 2'; 

А теперь поставим задачу: надо создать массив, в котором будем хранить значения, записанные в ячейках таблицы. Например:

Таблица 1

delphi массив строк

Посмотрим, как создаётся массив строк.

type
tArr=array[0..1,0..2] of string;
var vArr:tArr;

Расположение элементов массива в памяти

Так как в приведённом примере каждый элемент массива хранит 18 символов (включая пробелы), то каждому элементу для хранения необходимо 18+2 байт памяти (1 символ занимает 1 байт + 2 байта под символы конца строки #0).

Если посмотреть на расположение элементов в памяти, то номера ячеек заполняются следующим образом:

Таблица 2

Где n — адрес нулевой ячейки массива.

Тогда элемент vArr[i,j] будет иметь адрес N=n+i*20+j

Массив с тремя измерениями

Аналогично можно определить трехмерный массив строк.

tArr=array[0..4,0..2,0..3] of string;
var vArr:tArr;

Обращение к ячейке трёхмерного массива будет иметь вид: vArr[2,1,3].

Многомерные массивы

Массивы большей размерности определяются подобным образом.

В общем виде это выглядит так:

type
tArr=array[высшая размерность, … , низшая размерность] of тип_элемента

Правило «счётчика»

При заполнении массива надо придерживаться правила счётчика такси.

Заполняя массив, увеличиваем сначала правый индекс. Затем, увеличив на 1 индекс левее, опять прокручиваем правый индекс. И так далее.

Видео. Программа обработки массива.

Задача: сформировать массив для хранения значений из таблицы 1. Сформировать из данных, хранящихся в массиве, одну строку и отобразить её в компоненте memo.

Объявим тип «массив» с двумя измерениями (двумерный массив):

tArr=array[0..1,0..2] of string;
ar vArr:tArr; s:string;

Задаём начальное значение переменной s:

s:=''; //пустая строка

Заполняем массив:

vArr[0,0]:='столбец 0 строка 0';
vArr[0,1]:='столбец 0 строка 1';
vArr[0,2]:='столбец 0 строка 2';
vArr[1,0]:='столбец 1 строка 0';
vArr[1,1]:='столбец 1 строка 1';
vArr[1,2]:='столбец 1 строка 2';

Формируем строку для вывода в memo:

s:=vArr[0,0]+'   '+vArr[0,1]+' '+vArr[0,2]+' '+vArr[1,0]+' '+vArr1,1]+' '+vArr[1,2];

Используем свойство «text» объекта memo1.Lines:

memo1.Lines.Text:=s;

Создание программы представлено на видео.

https://programlife.ru/wp-content/uploads/2020/11/dvumernyj-massiv.mp4

Заключение.

Рассмотрено создание двумерного статического массива на примере массива строкового типа. Дана общая формула создания многомерного массива и приведён пример трехмерного массива.

Приведено правило распределение памяти под элементы массива.

Глоссарий.