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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2011, 13:09   #1
Homutova_Julia
Пользователь
 
Регистрация: 28.05.2011
Сообщений: 18
По умолчанию Сборщик мусора в динамическом списке

(Помогите пожалуйста исправить ошибку)

Код:
implementation 

 {$R *.dfm} 
 type 
 TPSlovo=^TSlovo; //Указатель на тип слово 
 TSlovo=record 
 Slovo:string[20];//слово 
 next:TPSlovo;//следующий элемент списка 
 end; 
 var 
 head: TPSlovo;//Начало (голова) списка 

 //сбор мусора 
 procedure TForm1.Button3Click(Sender: TObject); 
 var 
 i:integer; 
 k:integer; 
 begin 
 for i:=1 to k do 
 for k:=1 to i-1 do 
 if TSlovo^[i]=TSlovo^[k] then 
 begin 
 TSlovo^[i]:=GARBAGE_VALUE; 
 NumGarbage:=NumGarbage+1; end ; 
 CollectGarbage(); 
 end;
С уважением, Юлия

Последний раз редактировалось Stilet; 07.06.2011 в 14:38.
Homutova_Julia вне форума Ответить с цитированием
Старый 07.06.2011, 14:28   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

TPSlovo у тебя зачем ? Чтобы просто любоваться им ?)
mss вне форума Ответить с цитированием
Старый 07.06.2011, 14:39   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как-то я не оч. понял что этим кодом нужно...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.06.2011, 14:49   #4
Homutova_Julia
Пользователь
 
Регистрация: 28.05.2011
Сообщений: 18
По умолчанию

Весь код программы
Код:
implementation 

 {$R *.dfm} 
 type 
 TPSlovo=^TSlovo; //Указатель на тип слово 
 TSlovo=record 
 Slovo:string[20];//слово 
 next:TPSlovo;//следующий элемент списка 
 end; 
 var 
 head: TPSlovo;//Начало (голова) списка
//Добавить элемент в начало списка 
procedure TForm1.Button1Click(Sender: TObject); 
var node: TPSlovo; //новый узел 
curr: TPSlovo;//текущий узел 
pre: TPSlovo; //предыдущий относительно curr узел 
begin 
new(curr);//новый элемнт списка 
curr^.Slovo:=Edit1.Text; //фамилия 

// Добавление в начало списка узла в список 
//сначала найдем подходящее в списке места для узла 
curr^.next:=head; 
head:=curr; 
//отчистить поля ввода 
Edit1.Text:=' '; 

end; 

//вывести список 
procedure TForm1.Button2Click(Sender: TObject); 
var curr: TPSlovo; //текущий элемент списка 
n:integer; // длина (количество элементов) списка 
st: string; //строка представление списка 
begin 
n:=0; 
st:=' '; 
curr:=head; //указатель на первый элемент списка 
while curr<>NIl do 
begin 
 n:=n+1; 
 st:=st+curr^.Slovo+#13; 
 curr:=curr^.next;// уазатель на следующий элемент 
end; 
if n<>0 then ShowMessage('Список'+#13+st) 
else ShowMessage('В списке нет элементовю'); 
end; 

// начало работы программы 
procedure TForm1.FormActivate(Sender: TObject); 
begin 
head:=nil; //список пустой 
end;

//сбор мусора 
 procedure TForm1.Button3Click(Sender: TObject); 
 var 
 i:integer; 
 k:integer; 
 begin 
 for i:=1 to k do 
 for k:=1 to i-1 do 
 if TSlovo^[i]=TSlovo^[k] then 
 begin 
 TSlovo^[i]:=GARBAGE_VALUE; 
 NumGarbage:=NumGarbage+1; end ; 
 CollectGarbage(); 
 end;
end.
С уважением, Юлия

Последний раз редактировалось Stilet; 17.06.2011 в 22:35.
Homutova_Julia вне форума Ответить с цитированием
Старый 17.06.2011, 19:09   #5
Homutova_Julia
Пользователь
 
Регистрация: 28.05.2011
Сообщений: 18
По умолчанию

Не понимаю где ошибка

Код:
//Удаление повторов
procedure TForm1.Button2Click(Sender: TObject);
var node: TPSlovo; //новый узел
curr: TPSlovo;//текущий узел
pred: TPSlovo; //предыдущий относительно curr узел
next: TPSlovo;//следующий щтносительно curr узел
n:integer; // длина (количество элементов) списка
st: string; //строка представление списка
begin
curr^.Slovo:=Edit1.Text; //фамилия

//Если элементы повторяются, то оставить один из них
if Curr^.next=Curr^.pred then
begin
// Удаление из списка
curr:=next;
next:=curr^.next;
Dispose(next);
//отчистить поля ввода
Edit1.Text:='';
 end;
//вывести список в Label3
n:=0;
st:='';
curr:=head; //указатель на первый элемент списка
while curr<>NIl do
begin
  n:=n+11;
  st:=st+curr^.Slovo+#13;
  curr:=curr^.pred;// указатель на следующий элемент
end;
if n<>0 then Label3.Caption:='Список после удаления повторов'+#13+st
else ShowMessage('В списке нет элементовю');

end;
С уважением, Юлия
Homutova_Julia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Опрос: Сборщик мусора Пепел Феникса Общие вопросы по программированию, компьютерный форум 15 20.04.2011 19:19
Программа по уборки мусора. Где недоработка?! Mrbober Общие вопросы C/C++ 2 19.02.2011 15:27
Чистка реестра от мусора Gerzs Софт 1 21.04.2010 09:57
Обработка содержимого ячеек - отчистка от мусора Bromista Microsoft Office Excel 10 17.04.2009 11:39
Программа по удалению мусора KORN Софт 12 31.10.2007 08:58