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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2008, 16:00   #1
SeverBaP
 
Аватар для SeverBaP
 
Регистрация: 24.11.2008
Сообщений: 6
Печаль Список элементов (Динамический массив)

Программирую на 1С (что бы он провалился этот 1С), понадобилось мне кое-что для 1С спомощью DELPHI: короткая программа по созданию динамического списка элементов с использованием классов.
Долго ковырялся и не чего толком не сделал, суть в том что визуальные компонетов использовать не надо ... начал как всегда с создания TMassive с свойствами: количество элементов в массиве (списке), первый элемент, собственно ссылка на элемент (TElement), функция создания массива, удаления, поиска и добавления элемента в массив. TElement: идентификато (короткое название пока), ссылка на следующий элемент (может кинуть это в массив????), позиция в массиве (может ее тоже туда в массив ), функции иннициализации и удаления...

че делать-то??
Злостным оброзом ругаюсь кодом!!!!
SeverBaP вне форума Ответить с цитированием
Старый 25.11.2008, 08:09   #2
SeverBaP
 
Аватар для SeverBaP
 
Регистрация: 24.11.2008
Сообщений: 6
По умолчанию

Код:
PElement=^TElement;
TElement=object      info:string;
n:integer;
last:PElement;
constructor create;
    end;
    PMassive=^TMassive;
    TMassive=object        { указатели на первое и последнее звенья списка }
        first, last:PElement;        { число элементов массива }
        count : Integer;        { Конструктор создает новый пустой массив }
        constructor create;
        destructor destroy;        { Функция, выдающая текущий размер массива }
        function length : Integer; virtual;        { Функции индексации }
        function get(i:Integer):string; virtual;
        procedure put(i:Integer; e:TElement); virtual;        { Процедура добавления нового элемента в конец массива }
        procedure add(e:TElement); virtual;        { Вспомогательная функция поиска элемента по номеру }
        function find(i : Integer):PElement;
    end;
var  Form1: TForm1;implementation{$R *.dfm}
   constructor TMassive.create;
    begin
       first:= nil;
  last:= nil;
  count:=0;
    end;
    destructor TMassive.destroy;
        var current, save:PElement;
    begin
        current:=first;
        while current <> nil do begin
            save:=current;
            current:=current^.next;
            dispose(save);
        end;
        first:=nil;
  last:=nil;
  count:=0;
    end;
    function TMassive.length:Integer;
    begin
        length:=count
    end;
    function TMassive.find(i : Integer) : PElement;
        var current : PElement;
    begin       if i < 1 then begin
          ShowMessage('Ошибка индексации: выход индекса!');
          halt(100)
       end;
       current := first;
       while (i > 1) and (current <> nil) do begin
           current := current^.next;
 dec(i)
       end;
       if current = nil then begin
          ShowMessage('Ошибка индексации: выход индекса');
          halt(100)
       end;
       find := current
    end;
    function TMassive.get(i : Integer) : string;
    begin
       get := find(i)^.info
    end;
    procedure TMassive.add(e:TElement);
        var newElement : PElement;
    begin
        new(newElement);
        newElement^.info:='{ту та полный косяк после пива}';
        newElement^.:=nil;
        if first = nil then 
           first := newElement
        else
        last^.next := newElement
        last:=newElement;
        inc(count)
    end;
вчера наклепал неработает нифига!!!
подскажите как правильно!!!
Злостным оброзом ругаюсь кодом!!!!

Последний раз редактировалось SeverBaP; 25.11.2008 в 08:14.
SeverBaP вне форума Ответить с цитированием
Старый 25.11.2008, 14:19   #3
SeverBaP
 
Аватар для SeverBaP
 
Регистрация: 24.11.2008
Сообщений: 6
По умолчанию

Так что я тут один и останусь?
хоть напишите туда я лезу или нет?
Злостным оброзом ругаюсь кодом!!!!
SeverBaP вне форума Ответить с цитированием
Старый 25.11.2008, 14:50   #4
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

напишу простой пример как работать с динамикой.

для начала
Код:
type uk = ^rec;
     rec = record
         x    : integer; // данные
         next : uk; // следующий элемент
      end;

var p, tt, t : uk; // p - вершина
создание
Код:
  p := nil;
  read(n); // первоначальное количество записей
  for i := 1 to  n do
   begin
     readln(x);
     new(tt); // выделяем память
     tt^.x := x; // записываем данные
     tt^.next := p; // добавляем
     p := tt;
   end;
удаление эл-та со значением x
Код:
  tt := p; t := tt;
  while( (tt<>nil)and(tt^.x <> x) )
  begin
     t := tt;
     tt := tt^.next;
  end;
  if (tt = nil) then // not found
  else
   begin
     t^.next := tt^.next; // удаляем из списка
     dispose(tt); // освобождаем память
   end;
добавление после эл-та со значением x
Код:
  tt := p;
  while( (tt<>nil)and(tt^.x <> x) )
  begin
     tt := tt^.next;
  end;
  if (tt = nil) then // not found
  else
   begin
     new(t);
     t^.x := y; // некоторе число
     t^.next := tt^.next;
     tt^.next := t;
   end;
удалить стек
Код:
  tt := p;
  while(p<>nil)
  begin
    p := tt^.next;
    disoose(tt);
    tt := p; 
  end;
я когда то так делал
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 25.11.2008, 14:57   #5
SeverBaP
 
Аватар для SeverBaP
 
Регистрация: 24.11.2008
Сообщений: 6
По умолчанию

для чего TStringList или TObjectList???
Это возможно забадяжить в делфи?
Злостным оброзом ругаюсь кодом!!!!
SeverBaP вне форума Ответить с цитированием
Старый 25.11.2008, 15:25   #6
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

честно - не знаю писал на паскале (причем года так 3-4 назад) в дельфях динамикой не пользовался.
Учиться, учиться и еще раз учиться

Последний раз редактировалось Ламер_001; 25.11.2008 в 15:33.
Ламер_001 вне форума Ответить с цитированием
Старый 25.11.2008, 15:42   #7
SeverBaP
 
Аватар для SeverBaP
 
Регистрация: 24.11.2008
Сообщений: 6
По умолчанию

Вот и я про что сам писал блин не помню!!!
Злостным оброзом ругаюсь кодом!!!!
SeverBaP вне форума Ответить с цитированием
Старый 28.11.2008, 15:21   #8
SeverBaP
 
Аватар для SeverBaP
 
Регистрация: 24.11.2008
Сообщений: 6
По умолчанию

Ну так что мне делать то?
Злостным оброзом ругаюсь кодом!!!!
SeverBaP вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi] TStringGrid + динамический список dee_lv Помощь студентам 3 27.04.2008 03:00
динамический массив Dimon Паскаль, Turbo Pascal, PascalABC.NET 3 21.03.2008 18:08
Динамический список...на Delphi Olgasato Помощь студентам 6 11.12.2007 15:02
Динамический список (срочно!) Achtung-Partizanen Помощь студентам 4 08.05.2007 16:08