Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Пример 2. Инициация двумерного динамического массива




Будем инициировать двумерный массив 3 х 3,

type T2Ar_Real = array of array of Real; //в разделе implementation

var M2:T2Ar_Real; //двумерный динамический массив

…………………………

begin //в исполняемом блоке какой-либо процедуры

SetLength(M2, 3); //Устанавливаем длину первого измерения = 3 (количество

столбцов)

SetLength(M2[0], 3);//Задаем длину 0-го столбца, счёт от 0

SetLength(M2[1], 3);//Задаем длину 1-го столбца

SetLength(M2[2],3);//Задаем длину 2-го столбца

Недостаток такого способа

Пример 3. Процедура инициации двумерного массива

Дано: описание типа двумерного динамического массива, type T2Ar_Real = array of array of Real;

описание переменной массива, var M2:T2Ar_Real;

поле Edit1, в которое будет введено значение размерности массива N;

Требуется разработать процедуру Cr_2Mx инициации двумерного динамического массива размером N x N.

Постановка задачи:

· после ввода размерности массива, преобразуем строковое значение в числовое N;

· зададим количество столбцов массива;

· в цикле зададим длину каждого столбца.

 

procedure Cr_2Mx(Str: String; var M2: T2Ar_Real; var N: integer);

{Str – строковое значение размерности массива}

{ var M2 – открытый параметр массива}

{ var N – размерность массива, }

var i, cod: Integer; // i – счётчик, cod - индикатор преобразования Строка-Число

begin If Str ='' //проверка на пустое значение

Then begin

ShowMessage('Введите N!');

exit //досрочное завершение процедуры

end; //конец if Str…

Val(Str, N, сod); //преобразование Str в число N

if cod = 0 //успешное преобразование

Then begin

SetLength(M2, N); //задаём кол-во столбцов N

for i:= 0 to N -1 do //задаем длину i-го столбца, счёт от 0

SetLength(M2[i], N);

End

Else begin

ShowMessage('Ошибка ввода N!');

exit;

End;

End;

true
Начало
Конец
true
For
Exit
Str ='' проверка на пустое значение
if
Схема алгоритма. Инициация двумерного массива Cr_2Mx(Str: String; var M2: T2Ar_Real; var N: integer)
Val(Str, N, Cod)
false
Ошибка ввода N
Exit
SetLength(M2[i], N) Длина i-го столбца
SetLength(M2, N) кол-во столбцов N
if
0.. N-1
Введите N
Cod = 0
true
Вызов процедуры инициации двумерного массива NxN, из какой-либо процедуры обработки события будет выглядеть так, Cr_2Mx(Edit1.Text, M2, N).

 

Пример 4. Формирование двумерного массива случайных чисел

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

procedure TForm1.FormActivate(Sender: TObject);

Begin

Randomize; //инициация генератора случайных чисел

End;

После вызова генератора Randomize обращаются к функции случайных чисел Random(Range: Integer) или RandomRange(const AFrom, ATo: Integer): Integer.

Значение, возвращаемое функцией Random, зависит от способа обращения к функции:

· если параметр Range опущен, то X:= Random получит случайное вещественное значение в диапазоне 0 <= X < 1;

· если задан параметр Range, то X:= Random(n) получит случайное целое значение в диапазоне 0 <= X < n; для получения Х от 10 до 20 следует задать X:= Random(10)+11.

Обращение к RandomRange(const AFrom, ATo: Integer): Integer требует подключения модуля Math к перечню модулей, которые Delphi автоматически включает в раздел uses.

Uses

Windows, Messages, …, Math;

RandomRange(const AFrom, ATo: Integer): Integer;

AFrom и ATo соответственно начальное и конечное значения диапазона

случайных чисел.

Процедура TForm1.Button1Enter инициирует двумерный динамический массив процедурой Cr_2Mx (см. пример 3); в цикле, посредством функции случайных чисел, присваивает элементам массива вещественные значения в диапазоне 0 <= M[i, j] < 1; распечатывает значения элементов массива.

 

procedure TForm1.Button1Enter(Sender: TObject);

var i, j: Integer;

Begin

Label1.Caption:= ''; //очистка метки вывода массива

Cr_2Mx(LabeledEdit1.Text, M, N); //инициация массива

for i:= 0 to N -1 do //цикл по строкам i

Begin

for j:= 0 to N -1 do //вложенный цикл по столбцам j

Begin

M[i, j]:= Random;

Label1.Caption:= Label1.Caption + #9+FloatToStr(M[i, j])+#9;

end; //конец цикла по j

Label1.Caption:= Label1.Caption+#13; //начать с новой строки

end; //конец цикла по i

End;

Схема алгоритма. Формирование двумерного массива случайными числами TForm1.Button1Enter(Sender: TObject)
for
Начало
Конец
For
i=0.. N-1
Перевод строки
M[i, j]:= Random Случайное число
J=0.. N-1
Cr_2Mx(LabeledEdit1.Text, M, N) Инициация массива
Очистка метки вывода  
Вывод элемента массива

 





Поделиться с друзьями:


Дата добавления: 2016-10-27; Мы поможем в написании ваших работ!; просмотров: 333 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Есть только один способ избежать критики: ничего не делайте, ничего не говорите и будьте никем. © Аристотель
==> читать все изречения...

2268 - | 2218 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.