Динамические Списки!

  • Автор темы felixandr
  • Дата начала
F

felixandr

#1
Самого доброго времени суток! :welcome:
У меня не получается сделать 6 прогу...
Её смысл:
Она должна быть в 3 процедуры.
Первая:создание списка, заполнение его числами и вывод.
Вторая:ввод числа, после этого номера-все элементы списка удаляются и происходит вывод.
Третья-вывод текущего состояния списка!
похоже, там список не хочет хочет изменяться в процедурах.

Я набросал код:


Код:
uses crt;
const n=15;
type mas=array[1..n] of integer;

type
typ=^typemain;
typemain=record
int:integer;
next:typ;
intzap:typ;
end;

var
t,y,u:integer; intzap:typ;strt,over:typ;

procedure createNviv;
var
i:integer;
next:typ;
matr:mas;
begin

for i:=1 to n do
begin
matr[i]:=i*i;
end;

next:=nil;
for i:=1 to n do begin
new(intzap);
intzap^.int:=matr[i];

writeln(intzap^.int);

end;

end;

procedure viv;
var i:integer; next:typ;
begin

if intzap=nil then
writeln('CTEK nYCT');

while intzap<>nil do{ begin}
{for i:=1 to n do begin
}writeln(intzap^.int);
{ intzap:=intzap^.next;

end;}
{end;
}
end;

procedure del;
var i,G:integer;
begin
writeln('VVEDI S KAKOI STROKI HOCHESH UDALIT');
readln(g);

for i:=g to n do begin
intzap:=intzap^.next;
intzap^.next:=intzap^.next^.next;
end;

for i:=1 to g do
writeln(intzap^.int);

end;

begin
clrscr;

repeat {clRSCR;}

writeln('vvedi 1 dlya zapoln i vivoda');
writeln('vvedi 2 dlya vivoda');
writeln('vvedi 3 dlya vvoda chisla s kotorigo udalyatsya elementi');
writeln('press esc to exit');
case readkey of

'1':begin createNviv;READKEY;CLRSCR; end;
'2':begin viv;READKEY;CLRSCR; end;
'3':begin del;readkey;clrscr; end;
#27:exit;

else begin writeln('NET TAKOI KOMANDI'); readln; clrscr; end;
end;
until false;

readkey;

end.
:google:
ПОМОГИТЕ ПОЖАЛУЙСТА...
 

Vadik(R)

Well-known member
12.12.2007
469
0
#2
Проще код написать заново, но за "спасибо" не хочется
 

Senset

Well-known member
11.09.2006
136
0
#3
Да набросал не то слово... настроил точнее) хоть бы отформатировал... чтобы читать полегче было)
Первая:создание списка, заполнение его числами и вывод.
Я так понимаю что список чисел должен быть... а не список массива чисел (точнее указатель на структуру цепь, которой всего в 1 элемен, короче в твоем примере толку от динамики мало)
Вторая:ввод числа, после этого номера-все элементы списка удаляются и происходит вывод.
раз уж создавал список процедурой new, то и удалять надо юзая dispose
Третья-вывод текущего состояния списка!
и судя по всему эта третья процедура участвует в 1-ой)

исчо вопросы? =)