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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2009, 07:13   #1
MatTtrixXx
 
Регистрация: 20.10.2009
Сообщений: 3
Вопрос МАSSIВ

Как создать массив, который состоял бы из кучи других массивов??? например: есть массив "города", нада шоб если в тексте есть город( пр-р Москва), то в массиве "города" записался бы массив "Москва" с какими-то элементами (к пр-ру улицы), но тоже из этого текста(если таковые имеются)!!!
есть идеи??? покажите свои знания, прогеры)))
MatTtrixXx вне форума Ответить с цитированием
Старый 23.10.2009, 09:07   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Рекомендую бинарное дерево.
Это не массив а динамический список, элементом которого является такой же динамический список
Пример грубоват но :
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
 PTitem=^TItem;
 TItem=record
  Next,prev:PTItem;
  AText:String;
  Items:PTitem;
 end;
     {$o-}
 var l,c,i,First:PTitem; kc:integer;

 // Типа функа ввода
 Function Add(PrevItem:PTitem;Adata:string):PTItem;
 var p:PTitem;
 begin
  New(p);
  p.prev:=PrevItem;
  if PrevItem<>nil then
   PrevItem.Next:=p;
  p.Items:=nil;
  p.Next:=nil;
  p.AText:=Adata;
  Add:=p;
 end;
 // типа вывод
 Procedure ou(pnt:PTitem);
 var i:integer;
 begin
  inc(kc);
  while pnt<>nil do begin
    for i:=0 to kc do write(' ');
    writeln(pnt.AText);
    if pnt.Items<>nil then
     ou(pnt.Items);
    pnt:=pnt.Next;
  end;
  dec(kc);
 end;

begin    c:=0;
 First:=Add(nil,'Россия'); i:=First;
 i:=Add(i,'Украина');
   i.Items:=add(nil,'Краматорск');   c:=i.Items;
   c:=add(c,'Донецк');
   c:=add(c,'Львов');
 i:=Add(i,'Амэрыка');
   i.Items:=add(nil,'Нуиорк');   c:=i.Items;
   c:=add(c,'Техас');
     c.Items:=add(nil,'Буш1');   l:=c.Items;
     l:=add(l,'Бушевка');
     l:=add(l,'Бушкино');
   c:=add(c,'Олабама');
 i:=Add(i,'Китай');
  ou(First);
  readln;
end.
Думаю сойдет для дерева.
Единственное что добавить - очистку памяти.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.10.2009, 02:39   #3
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Рекомендую бинарное дерево.
Только маленькое уточнение - дерево в данном случае не бинарное
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Ответ


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