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

Пример 4. Динамические массивы

Предыдущую задачу формирования массивов Mx и My: решим для случая задания размерности массива в процессе выполнения программы.

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

  • тип массива объявим динамическим, type T_Mxy = array of Real;

  • количество элементов массива m объявим переменной, var m: Integer;

  • контроль ввода переменных и преобразование их в числа, в программе не приведены (см. аналогичные задачи в работах 3 и 4);

  • освобождение динамической памяти свяжем с событием OnDeactivate – закрытие формы.

type T_Mxy = array of Real; //тип - динамический массив, размер не указан

var dX, n: Real; //приращение X, показатель степени

Mx, My: T_Mxy;

m: Integer; //кол. элементов динамического массива

procedure Cr_Mx(Str_X, Str_d : string; Var MM: array of Real);

{Текст процедуры не изменён (см. пример 3}

end;

procedure Cr_My(Mx: array of Real; var My: array of Real; n: real );

{Текст процедуры не изменён (см. пример 3}

end;

procedure TForm1.Button1Click(Sender: TObject);

{Преобразование переменных в числа выполнены}

SetLength(Mx, m); //выделение памяти массиву Mx

SetLength(My, m); //выделение памяти массиву My

Label3.Caption:= ''; //очистка метки вывода результатов

Cr_Mx(LabeledEdit1.Text, LabeledEdit2.Text, Mx); //формирует массив Mx

Cr_My(Mx, My, n); //формирует массив My

For i :=0 to m-1 do //вывод

Label3.Caption:=Label3.Caption+IntToStr(i+1)+#9+ //номер

FloatToStrF(Mx[i], ffGeneral, 5, 3)+ #9+ //Mx[i] элемент

FloatToStrF(My[i], ffGeneral, 5, 3)+ #13; //My[i] элемент

end;

procedure TForm1.FormDeactivate(Sender: TObject); //событие закрытие формы

begin

Finalize(Mx); //очистка динамической памяти

Finalize(My);

end;

Содержание отчета

  1. Задание.

  2. Листинг модуля с подробными комментариями.

  3. Для каждой из пользовательских процедур дайте обоснование назначенного типа параметра (параметр-значение или параметр переменная).

  4. Схемы алгоритмов всех нелинейных процедур.

  5. Условия тестирования и ожидаемый результат.

  6. Перечень ситуаций, при которых возможно аварийное завершение Вашей программы.

Контрольные вопросы

  1. Каков синтаксис оператора For?

  2. Каков синтаксис оператора While?

  3. Каков синтаксис оператора Repeat?

68

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