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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2014, 16:39   #1
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию Не пойму, почему не может определять идентификаторы. Указатели. DELPHI

Где у меня ошибка? Вроде все задано правильно((

Код:
type
  TDec = ^Dec;
  Dec = record
    Elem:     Integer;
    NextElem: TDec;
    PrevElem: TDec;
  end;

var
  First  : TDec = nil;
  Last   : TDec = nil;
  Current: TDec;

// Процедура добавления элемента в начало списка
procedure AddElemBeginDec (var First, Last: TDec; TempElem: Integer);
var
  Current: TDec;
begin
  New(Current);
  Current^.Elem    := TempElem;
  Current^.NextElem:= First;
  Current^.PrevElem:= nil;
  if First<> nil  then First^.PrevElem:= Current
                  else Last:= Current;
  First:= Current;
end;

// Процедура добавления элемента в конец списка
procedure AddElemEndDec (var First, Last: TDec; TempElem: Integer);
var
  Current: TDec;
begin
  New(Current);
  Current^.Elem    := TempElem;
  Current^.NextElem:= nil;
  Current^.PrevElem:= Last;
  if Last<> nil then Last^.NexElem:= Current;
                else First:= Current;
  Last:= Current;
end;
zaira001002 вне форума Ответить с цитированием
Старый 14.02.2014, 19:01   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Вы пытаетесь в записи в качестве полей использовать тот же тип записи. Поэтому, что с указателями, что без них, ничего и не получится.
Кроме того, совершенно непонятно, что делает этот код. Реализация сортировки, дерева?.. Для этого уже давным давно придумали другие, более совершенные, подходы.
Streletz вне форума Ответить с цитированием
Старый 14.02.2014, 20:42   #3
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Спасибо)))))
zaira001002 вне форума Ответить с цитированием
Старый 14.02.2014, 20:47   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
Радость

Пожалуйста!
Streletz вне форума Ответить с цитированием
Старый 14.02.2014, 21:35   #5
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Не могли бы все же подсказать где можно разобраться с темой на указатели)))) я была бы очень благодарна))) Потому что, я никак не могу полностью вникнуть в это, где-то , что-то недопонимаю)))) Может вы могли бы дать мне ссылку, тем более вы говорили, что есть более совершенные подходы)?
zaira001002 вне форума Ответить с цитированием
Старый 14.02.2014, 22:01   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Вы пытаетесь в записи в качестве полей использовать тот же тип записи. Поэтому, что с указателями, что без них, ничего и не получится.
Streletz, что-то вы придумали...

zaira001002, почти все у вас нормально, закоментировал кое-что лишнее и ошибочку исправил
Код:
type
  TDec = ^Dec;
  Dec = record
    Elem:     Integer;
    NextElem: TDec;
    PrevElem: TDec;
  end;

var
  First  : TDec = nil;
  Last   : TDec = nil;
//  Current: TDec;

// Процедура добавления элемента в начало списка
//procedure AddElemBeginDec (var First, Last: TDec; TempElem: Integer);
procedure AddElemBeginDec (TempElem: Integer);
var
  Current: TDec;
begin
  New(Current);
  Current^.Elem    := TempElem;
  Current^.NextElem:= First;
  Current^.PrevElem:= nil;
  if First<> nil  then First^.PrevElem:= Current
                  else Last:= Current;
  First:= Current;
end;

// Процедура добавления элемента в конец списка
//procedure AddElemEndDec (var First, Last: TDec; TempElem: Integer);
procedure AddElemEndDec (TempElem: Integer);
var
  Current: TDec;
begin
  New(Current);
  Current^.Elem    := TempElem;
  Current^.NextElem:= nil;
  Current^.PrevElem:= Last;
//  if Last<> nil then Last^.NexElem:= Current;
  if Last<> nil then Last^.NexElem:= Current
                else First:= Current;
  Last:= Current;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.02.2014, 23:04   #7
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Спасибо большое))))))))))))))
zaira001002 вне форума Ответить с цитированием
Старый 14.02.2014, 23:15   #8
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Кстати, выдает ошибку " Undeclared identifier 'Elem' at line 20"( 20 строка получается,если считать с моего выше фрагмента, то есть строка след:

Код:
 Current^.Elem    := TempElem;
И таких ошибок много, везде, где использовала "^.", прошу прощения, что не могу выразиться правильно, я едва разобралась с этой темой)))
zaira001002 вне форума Ответить с цитированием
Старый 14.02.2014, 23:20   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
  if Last<> nil then Last^.NextElem:= Current
4-ая строка снизу. Больше нет. Код нормально скопируйте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.02.2014, 23:24   #10
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Я это исправила, но у меня ,по- прежнему, ошибки там, где я пишу , например:
Код:
 Current^.Elem:= TempElem;
zaira001002 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не пойму почему Borkot Общие вопросы C/C++ 3 09.06.2013 22:33
Не пойму почему не работало ((( firephenix Помощь студентам 2 16.10.2012 20:25
кто может объяснить,почему на моем компе программа работает на других нет?код в Delphi Symba Общие вопросы Delphi 1 24.03.2011 01:03
Не пойму почему ошибка... ImmortalAlexSan Общие вопросы Delphi 13 22.08.2010 20:26
не пойму почему. spaun88 Общие вопросы Delphi 8 09.06.2010 17:26