Помогите пожалуйста срочно нужна ваша помощь. (Pascal)

Ответить
Эльчик
Сообщения: 1
Зарегистрирован: 02 апр 2008, 04:27

Помогите пожалуйста доделать 2 программы.
Они впринципе почти сделаны.
К первой нужно дописать процедуру вставки и замены, и сделать так чтобы работало меню выбора процедуры через case of.
А вторая должна быть такой же только с двунаправленным списком.
Помогите пожалуйста.



[syntax='Delphi']
Program spisok;
type
tab=^p;
p=record
p1:integer;
p2:tab;
end;
var
b,u:tab;
a,c,d:integer;
procedure vvod (var u:tab);
var
t,t1:tab;
begin
new (u);
t:=u;
readln (t^.p1);
t^.p2:=nil;
while t1^.p1 <>0 do
begin
new (t1);
readln (t1^.p1);
t^.p2:=t1;
t1^.p2:=nil;
t:=t1;
end;
end;
procedure vuvod (u:tab);
var
t:tab;
begin
t:=u;
while t^.p2 <>nil do
begin
write (t^.p1, ' ');
t:=t^.p2;
end;
end;
procedure poisk (u:tab; a:integer; var b:tab);
var
t:tab;
begin
t:=u;
b:=nil;
while t^.p2<>nil do
begin
if a=t^.p1 then
b:=t;
t:=t^.p2;
end;
end;
procedure udalenie (b:tab; var u:tab);
var
d,t:tab;
begin
t:=u;
if b^.p2^.p2=nil then
begin
dispose (b^.p2^.p2);
b^.p2:=nil
end
else
begin
d:=b^.p2^.p2;
dispose (b^.p2);
b^.p2:=d;
end;
end;

begin
writeln ('1 - Vvod');
writeln ('2 - Poisk');
writeln ('3 - Udalenie');
writeln ('4 - Vstavka');
writeln ('5 - Zamena');
writeln ('6 - Vuvod');
writeln ('0 - The End');
while c<>0 do
writeln ('введите komandu');
read (c);
if (c>=0) and (c<=6) then
case c of
vvod (u);
begin
writeln ('какое число найти');
read (a);
poisk (u,a,b);
if b=nil then
writeln ('число не найдено')
else
writeln ('число найдено');
end;
if u^.p2=nil then
writeln ('удалять нельзя')
else
udalenie (b,u);
vuvod (u);
end.
[/syntax]
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Во-первых, Эльчик, используйте теги code и /code (в квадратных скобках), а то код нечитаемый.
А во-вторых, саму процедуру выбора я сделал бы примерно так:

Код: Выделить всё

repeat
  clrscr;
  writeln ('1 - Vvod');
  writeln ('2 - Poisk');
  writeln ('3 - Udalenie');
  writeln ('4 - Vstavka');
  writeln ('5 - Zamena');
  writeln ('6 - Vuvod');
  writeln ('0 - The End');
  writeln ('введите komandu');
  readln(c);
  case c of
  1: vvod(u);
  2: begin 
      writeln('Какое число найти?');
      readln(a);
      poisk(u,a,b);
      end;
  3: {и так далее, описываем все пункты меню}
until c=0;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить