Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

памяти под типизированные указатели можно использовать с расширенными возможностями- в ней допускается вто

Работа добавлена на сайт samzan.net:


Расширенное использование new.  Понятие динамических объектов

При работе с динамическими объектами процедуру new (выделения хип-памяти под типизированные указатели) можно использовать с расширенными возможностями: в ней допускается второй параметр, в котором можно указывать обращение к конструктору для инициализации динамического объекта; процедуру new можно вызывать как функцию, возвращающую значение типа указатель, которое указывает на динамически размещаемый объект. Первым параметром функции new  (в отличие от процедуры new) должен быть тип размещаемого объекта, а вторым параметром может быть (как и в процедуре new) имя конструктора.

Такие расширенные средства позволяют одновременно, и зарезервировать хип-память для динамического объекта и разместить в ней некоторое (начальное) значение (с помощью конструктора). В такой ситуации (использования нескольких уровней вложенности) проблемой может стать нехватка распределяемой хип-памяти. При нехватке хип-памяти необходимо ликвидировать всю цепочку размещенных объектов. Эту операцию может выполнить стандартная процедура fall, которую можно вызывать только из конструктора и которая освобождает выделенную память, возвращая значение указателя nil. Примеры расширенного использования new:

var pL1:^Line; {динамический объект типа Line}

new(pL1,Init);  {Init - конструктор для инициализации объекта pL1}

pL1:= new(Line, Init); {инициализация pL1 с помощью функции new}

Понятие о динамических объектах.

Объектные переменные совершенно подобны переменным других типов Турбо Паскаля. Для них допустим оператор присваивания и обращение к полям и методам по составным именам (как для записей). Экземпляры объектов, размещаемые в динамической памяти, называются динамическими объектами.

Для создания динамических объектов необходимо создать типизированный указатель на заданный тип объекта:

type pLine = ^Line; {указатель на объект типа Line }

var pL1:pLine; {динамический объект типа pLine}

Динамические объекты чрезвычайно полезны для задач моделирования, управления, проектирования. Библиотеки объектов в большинстве своём содержат динамические объекты, как например Turbo Vision -библиотека объектов интерфейса. Для использования динамических объектов характерными процессами являются создание объекта (с размещением его в хип-памяти) и удаление объекта (освобождение  занимаемой им хип-памяти).

Дана квадратная матрица. Если номер столбца с максимальной суммой элементов совпадает с номером строки с максимальной суммой элементов, определить сумму найденных элементов строки и столбца, иначе - распечатать номера найденных строки и столбца с максимальными суммами.

unit Z433_22;

interface

Const n=5;

Type matriza=array[1..n,1..n]of real;

massiv=array[1..n]of real;

procedure colmax(a:matriza;Var ncol:integer;Var sumcol:massiv;Var maxcol:real);

procedure rowmax(a:matriza;Var nrow:integer;Var sumrow:massiv;Var maxrow:real);

procedure summa(a:matriza;ncol:integer;nrow:integer;Var sumelem:real);

implementation

procedure colmax(a:matriza;Var ncol:integer;Var sumcol:massiv;Var maxcol:real);

Var i,j:integer;

Begin

for j:=1 to n do Begin

sumcol[j]:=0;

for i:=1 to n do

sumcol[j]:=sumcol[j]+a[i,j]; end;

maxcol:=sumcol[1];

for j:=2 to n do

if sumcol[j]>maxcol then Begin

maxcol:=sumcol[j];

ncol:=j; end;

end; { procedure colmax }

procedure rowmax(a:matriza;Var nrow:integer;Var sumrow:massiv;Var maxrow:real);

Var i,j:integer;

Begin

for i:=1 to n do Begin

sumrow[i]:=0;

for j:=1 to n do

sumrow[i]:=sumrow[i]+a[i,j]; end;

maxrow:=sumrow[1];

for i:=2 to n do

if sumrow[i]>maxrow then Begin

maxrow:=sumrow[i];

nrow:=i; end;

end;{ procedure rowmax }

procedure summa(a:matriza;ncol:integer;nrow:integer;Var sumelem:real);

Var i,j:integer;

Begin

sumelem:=0;

for i:=1 to n do

for j:=1 to n do

if (i=nrow) or (j=ncol)

then sumelem:=sumelem+a[i,j];

end; { procedure summa }

end.

program Z433_22;

uses Z433_22;

Var a:matriza;

sumcol,sumrow:massiv;

sumelem,maxcol,maxrow:real;

ncol,nrow,i,j:integer;

Begin

for i:=1 to n do

for j:=1 to n do

readln(a[i,j]);

colmax(a,ncol,sumcol,maxcol);

rowmax(a,nrow,sumrow,maxrow);

if ncol=nrow then Begin

summa(a,ncol,nrow,sumelem);

writeln(sumelem); end

else writeln(nrow,ncol);

end.




1. это качественная и количественная дифференциация и специализация трудовой деятельности
2. ИЗ ЖИЗНИ МЕДВЕДЕЙ Иллюстрации в технике оригами выполнила Гайдаенко Юлия дочка
3. ПРОЦЕСС это упорядоченный набор функций охватывающий различные сущности предприятия и завершающийся гл
4. Описание технологической линии производства вареных колбас
5. практикум для студентов специальности 061100 080507 Менеджмент организации 061000 080504 Государственное и муницип
6. Классификация гостиниц.html
7. Тема- Планеты Солнечной системы
8. это творческая работа поэтому абитуриенту необходимо показать не только знания литературных текстов но и.
9. Кинель ~ Черкасский медицинский колледж Рассмотрено
10. Тема- У магазині Вивчення слів book bgМета- Семантизувати нові лексичні одиниці та продемонструвати їх вжи
11.  Теоретические основы изучения формирования культуры досуга молодежи [3] 2
12. Модуль 6 Товарное оформление изделий
13. Тема работы- Составление программ разветвляющейся структуры Цели работы- Получить навыки решения задач
14. . Издержки производства и их виды.
15. Задание на лабораторную работу сентябрь 1 Построен
16. Задание 1 Связывание и консолидация рабочих листов в excel
17. ВВЕДЕНИЕ Целью курсовой работы выполняемой студентом специальности менеджмент организации является закр
18. Подсолнечник.html
19. тема мер направленных на оказание помощи молодежи в выборе профессии
20. Агроинженерия КостромаКГСХА2014 УДК ББК Т Составители- к