imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 25.02.2004, 18:43     # 1
LN berf
Member
 
Аватар для LN berf
 
Регистрация: 05.08.2003
Сообщения: 290

LN berf Луч света в тёмном царствеLN berf Луч света в тёмном царствеLN berf Луч света в тёмном царствеLN berf Луч света в тёмном царствеLN berf Луч света в тёмном царстве
Проблема написания программки на Borland Pascal

Я должен написать list

этот лист описан в библиотеке list.pas так.
---------------------------------------------------------

type
pos_type = ^link_type;
list_info_type = char;
link_type = record
info:list_info_type;
nextos_type;
end;
list_type = record
anchoros_type;
end;
Хочу щас написать программку использующую эту библиотеку.
Пользователь должен вводить место в listе и какой элемент он хочет в list занести

Вопрос
------------

Каким образом вводить место в listе если переменная pointer?!

Надеюсь не очень загрузил
Те кто еще че то помнить из Паааскаля помогите.
__________________
Кончив одно дело, начинай другое.
LN berf вне форума  
Старый 25.02.2004, 19:34     # 2
eowyn
Newbie
 
Аватар для eowyn
 
Регистрация: 05.02.2004
Адрес: vrn
Сообщения: 37

eowyn Реально крут(а)eowyn Реально крут(а)eowyn Реально крут(а)eowyn Реально крут(а)
Ты что хочешь вводить указатель?
Восстанавливая в голове, то что было в нее заложено пару-тройку лет назад, могу сказть, что место вставки в список вводилось по информационному полю... в данном случае, типа char.
Можно наверное воспользоваться и переменной типа link_type, но опять же полем info.
Или я что-то не так поняла и опять сморозила глупость?
__________________
4М - это не память, склероз.
eowyn вне форума  
Старый 25.02.2004, 19:45     # 3
LN berf
Member
 
Аватар для LN berf
 
Регистрация: 05.08.2003
Сообщения: 290

LN berf Луч света в тёмном царствеLN berf Луч света в тёмном царствеLN berf Луч света в тёмном царствеLN berf Луч света в тёмном царствеLN berf Луч света в тёмном царстве
Да вроде info я ввел.
А вот позицию в listе как ввести?
Это ж ведь тоже указатель.

А! то есть надо позицию тоже как поле info вводить
А если у меня declaration процедуры такой

procedure list_insert(var l:list_type; posos_type; x:list_info_type);
__________________
Кончив одно дело, начинай другое.

Последний раз редактировалось LN berf; 25.02.2004 в 19:52.
LN berf вне форума  
Старый 25.02.2004, 23:00     # 4
joker99
Full Member
 
Аватар для joker99
 
Регистрация: 19.07.2003
Адрес: Israel
Сообщения: 924

joker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форуме
Цитата:
LN berf:
Каким образом вводить место в listе
Обычно процедура вставки в лист получает элемент после которого надо вставить новое значение, или индех элемента после кототого надо вставить новое значение.
т.е

вставить после элемента elem элемент new_val
procedure list_insert(var l:list_type; elem:list_info_type; new_val:list_info_type);

вставить элемента new_val в месте index
procedure list_insert(var l:list_type; index:integer; new_val:list_info_type);
__________________
Столько дел, что и работой занятся некогда...
joker99 вне форума  
Старый 26.02.2004, 08:35     # 5
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Цитата:
Да вроде info я ввел. А вот позицию в listе как ввести? Это ж ведь тоже указатель.
Во-первых, позиция - целое число, а не указатель.
Во-вторых, вводить в list его не надо, поскольку расположение элементов в списке может меняться, соответственно, невозможно жестко привязать к какому-либо элементу индекс.
Таким образом, тебе нужно просто дописать прогу, всавив в нее только процедуру вставки нового элемента в нужную позицию. Кажись это будет выглядеть так (тока я не проверял, у меня нет на машине паскаля):
Код:
procedure List_PosItemInsert (var Head: pos_type;
  NewItemPos: integer; NewItemCont: list_info_type); far;
var
  NewItem: pos_type;
begin
  if NewItemPos < 1 then exit;
  if (NewItemPos = 1) or (Head = nil) then begin
    New (NextItem);
    NextItem^.Info := NewItemCont;
    NextItem^.Next := Head;
    Head := NextItem;
  end else begin
    NextItem := Head^.Next;
    List_PosItemInsert (NextItem, NewItemPos - 1, NewItemCont);
    Head^.Next := NextItem;
  end;
end;
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  
Старый 26.02.2004, 14:01     # 6
LN berf
Member
 
Аватар для LN berf
 
Регистрация: 05.08.2003
Сообщения: 290

LN berf Луч света в тёмном царствеLN berf Луч света в тёмном царствеLN berf Луч света в тёмном царствеLN berf Луч света в тёмном царствеLN berf Луч света в тёмном царстве
Спасибо всем кто помог.
Уже сам написал
__________________
Кончив одно дело, начинай другое.
LN berf вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 14:10.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.