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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2010, 00:55   #1
Keyx
Новичок
Джуниор
 
Регистрация: 29.06.2010
Сообщений: 2
По умолчанию Создать двусвязанное кольцо, содержащее информацию о графических маркерах.

Уважаемые программисты! Помогите плиз решить задачку, бьюсь над ней целый день...


Создать двусвязанное кольцо, содержащее информацию о графических маркерах. Каждый эле-мент кольца – запись (координаты, цвет, тип маркера). Нарисовать все маркеры на экране, затем удалить из кольца все элементы, содержащие информацию о красных маркерах, очистить экран и снова нарисовать все маркеры, информация о которых осталась в кольце.

Заранее всем спасибо!!!
Keyx вне форума Ответить с цитированием
Старый 01.07.2010, 19:57   #2
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Вам осталось всего-то разобраться в коде, дописать удаление, очистку и вставку элементов списка))) И проверить код на ошибки... Удачи=)
Код:
type
  Marker = record
    color: integer;
    x,y: integer;
    tip: integer;
end;
type
  PElem = ^TElem;
  TElem = record
    next, prev: PElem;
    data: Marker;
end;
type
  TList = record
    head, tail: PElem;
end;

procedure Add(var list: TList; data: Marker);
var
  Elem: PElem;
begin
  getmem(Elem, sizeof(TElem));
  Elem^.data := data;
  if(list.tail = nil)then
  begin
    Elem^.next := Elem;
    Elem^.prev := Elem;
  end
  else
  begin
    Elem^.next := list.head;
    Elem^.prev := list.tail;
    list.tail^.next := Elem;
  end;
  if(list.head = nil) then list.head := Elem;
  list.head^.prev := Elem;
  list.tail := Elem;
end;

function Find(var list: TList; i: integer): PElem;
var
  Elem: PElem;
  j: integer;
begin
  Elem := list.head;
  for j:=2 to i do
    Elem := Elem^.next;
  Result := Elem;
end;

function Get(var list: TList; i: integer): Marker;
var
  Elem: PElem;
begin
  Elem := Find(list, i);
  Result := Elem^.data;
end;

var
  list: TList;
  m, mm: Marker;
begin
  list.head := nil;
  list.tail := nil;
  
  m.color := 5;
  m.x := 100; m.y:= 500;
  m.tip := 1;
  
  mm.color := 8;
  mm.x := 300; m.y:= 200;
  mm.tip := 2;

  Add(list, m);
  Add(list, mm);
  
  mm := Get(list, 1);
  m := Get(list, 2);
  
  writeln(m.color,' ',mm.color);
  readln;
end.
Kostia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
односвязное кольцо... Кнопка Общие вопросы C/C++ 5 13.12.2009 02:06
Пожалуйста помогите! Массив нужно свернуть в кольцо Gothar Паскаль, Turbo Pascal, PascalABC.NET 0 31.05.2009 21:10
Создать файл записей (таблицу) и вывести на экран информацию о людях (имя, год рожденя, день рождения) пепелаЦО Паскаль, Turbo Pascal, PascalABC.NET 3 24.05.2009 12:15
Необходимо создать файл, содержащий информацию о багаже пасажиров Андрю)(@ Помощь студентам 3 27.11.2008 10:08
Необходимо создать файл, содержащий информацию о багаже пасажиров Андрю)(@ Паскаль, Turbo Pascal, PascalABC.NET 3 26.11.2008 23:58