Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2008, 19:04   #1
Taisja
Пользователь
 
Регистрация: 31.05.2008
Сообщений: 25
Печаль Не могу понять почему вылетает 3 процедурка, помогите

Не могу понять, почему программка вылетает из-за 3 процедурки, в консоли все работало, Помогите разобраться, пожалуйста.
Списки
Составить программу, которая в списке L из каждой группы подряд идущих
одинаковых элементов оставляет только один.
implementation

{$R *.dfm}
type sp=^zap;
zap=record
inf:integer;
next:sp end;
var nach,p:sp;
bp:sp=nil; ep:sp=nil;
//заполнение списка
procedure TForm1.Button1Click(Sender: TObject);
var p:sp;
begin
new(p);
p^.inf:=strtoint(edit1.Text);
p^.next:=nil;
if bp =nil then bp:=p
else ep^.next:=p;
ep:=p;
edit1.Text:='';
edit1.SetFocus;
end;
//вывод списка
procedure TForm1.Button2Click(Sender: TObject);
var p:sp; s:string; n:integer;
begin
memo1.Lines.Clear;
n:=0;
s:='';
p:=bp;
while p<>nil do
begin
n:=n+1;
s:=s+inttostr(p^.inf)+#13#10;
p:=p^.next;
end;
if n<>0 then
memo1.Lines.Add('список'+#13#10+s)
else memo1.Lines.Add('список пуст');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
p:=nach;
while p^.next <> nil do
if p^.inf = p^.next^.inf then p^.next:=p^.next^.next
else p:=p^.next;
end;end.

Консольный вариант:
program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;

type sp=^zap;
zap=record
inf:integer;
next:sp end;
var nach,p2,p:sp; a:integer;
begin
new(p);
nach:=p;
writeln('Введи числа до 0');
readln(nach^.inf);
repeat
p2:=p;
new(p);
p2^.next:=p;
readln(a);
if a<>0 then p^.inf:=a else p2^.next:=nil;
p^.next:=nil;
until a=0;
p:=nach;
while p^.next <> nil do
if p^.inf = p^.next^.inf then p^.next:=p^.next^.next
else p:=p^.next;
p:=nach;
while p<>nil do
begin
write(p^.inf,' ');
p:=p^.next;
end;
writeln;
readln;
end.
Taisja вне форума Ответить с цитированием
Старый 04.06.2008, 19:20   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Вы nach на bp заменили не везде:
p:=nach;
alexBlack вне форума Ответить с цитированием
Старый 04.06.2008, 21:28   #3
Taisja
Пользователь
 
Регистрация: 31.05.2008
Сообщений: 25
По умолчанию

Большое спасибо! В следующий раз буду внимательней.
Taisja вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять в чем проблема (код) diznt Помощь студентам 2 03.08.2008 10:20
Не могу понять почему не идет сортировка файла, помогите пожалуйста Taisja Помощь студентам 2 15.06.2008 20:37
Помогите пожалуйста не могу понять! Kosoy135 Паскаль, Turbo Pascal, PascalABC.NET 7 28.12.2007 19:08
Не могу понять задание amandra Помощь студентам 11 16.10.2007 10:24
не могу понять... Dutchman Паскаль, Turbo Pascal, PascalABC.NET 4 14.12.2006 07:14