Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Р6_Влож_Циклы_печать.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
330.75 Кб
Скачать

Пример 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;

Оператор присоединения With

Оператор присоединения With предназначен для упрощения записи доступа к полям объекта. В общем случае, полное имя объекта состоит из цепочки идентификаторов разделённых точками: ИмяОбъекта.ИмяПоля, например, Label1.Caption. Использование With позволяет, единожды указав ИмяОбъекта, получить доступ ко всем полям без повторного указания имени объекта. with ИмяОбъекта do

begin ИмяПоля1 := ……

ИмяПоля2 := ……

………..

end;

Пример 5. Использование With при формировании массива

Рассмотрим задачу формирования массива случайными числами, используя оператор with. Рассматриваемый пример по содержанию полностью соответствует примеру 4, различие состоит в том, что для доступа к полю Label1.Caption использован оператор With. Отличия в тексте выделены курсивом.

procedure TForm1.Button1Enter(Sender: TObject);

var i, j : Integer;

begin

With Label1 do //с объектом Label1 выполнить

begin

Caption := '';

Cr_2Mx(LabeledEdit1.Text, M, N);

for i := 0 to n-1 do

begin for j := 0 to n-1 do

begin M[i, j] := Random;

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

end; // for j

Caption := Caption+#13;

end; // for i

Caption := Caption+FloatToStr(S)+#13;

Caption := Caption+FloatToStr(MinAr( M)) ;

end; // With

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]