Ввести пять элементов записи и вывести их - Pascal
Формулировка задачи:
Здравствуйте. Коснулся указателей, во взаимодействии с записями, что-то понял, что-то нет. Гляньте описание проги, все ли там правильно я понял. Программа вводит 5 элементов и просто их выводит. Спасибо.
type
Adr = ^Zveno; //создаем переменную ссылочного типа на запись
Zveno = Record //создаем запись с двумя элементами
Element: integer; //элемент целочисленного типа
Adrs: Adr //элемент (переменная) ссылочного типа на переменную ссылочного типа???????????????????????
End; //какой адрес я туда пишу???????????
var
Adr1,p,: Adr; //переменные ссылочного типа на тип аdr
i:integer;
//-----------------процедура ввода данных-----------------------
procedure adduk(var t:adr;i:integer); //партаметры переменные t-принимает вначале nil
var y:adr; //создаем переменную ссылочного типа
begin
new(y); //динамическая
y^.Element:=i; //добавляем элемент
y^.Adrs:=t; // присваиваем переменной adrs адрес nil- вначале, затем адрес y
t:=y; // возвращаем adr1 адрес в y и так 5 раз
end;
//------------------процедура вывода данных----------------------
procedure vivod(var t:adr); //принимаем адрес
begin
while (t<>nil) do //пока адрес не равен нил
begin
writeln('адрес адр1 ',t,' элемент ',t^.Element,' адрес^.адр1 ',t^.Adrs);
t:=t^.Adrs; //переходим к следующему адресу - вот тут вообще не догоняю каким образом он это делает
end; //если можно графически изобразить????????????
end;
//--------------------основная программа------------------------
begin //ну тут все понятно
for i:=1 to 5 do
begin
adduk(adr1, i);
writeln('адрес адр1 ',adr1,' элемент ',adr1^.Element,' адрес^.адр1 ',adr1^.Adrs );
end;
vivod(adr1);
dispose(adr1);
end.Решение задачи: «Ввести пять элементов записи и вывести их»
textual
Листинг программы
procedure vivod(t: adr);
Объяснение кода листинга программы
- Объявляется процедура
vivodс параметромt, который является переменной типаadr. Так как объявленным только заголовок процедуры и отсутствует остальной код, то без дополнительной информации о типеadrи действиях внутри процедуры, сложно точно определить, что делает этот код.