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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2010, 22:39   #1
kniazkinP
Пользователь
 
Регистрация: 10.04.2010
Сообщений: 11
По умолчанию Копирование из списка в массив

Есть двусвязный список с вносимыми в него данными простым вводом чисел
Код:
type
  plist = ^tlist;
  tlist = record
          data : double;
          next, prev : plist;
  end;
  p2list = ^plist;
 
 
procedure Add (list : p2list; d : double);
var
  l : plist;
begin
   if list^ = nil then
   begin
      AddToEnd (list, d);
      exit
   end;
 
   New (l);
   l^.data := d;
   l^.prev := list^;
   l^.next := list^^.next;
   (list^)^.next := l
end;
Нужно перенести дынные из списка который тоже выводится на экран по процедуре
Код:
procedure Display (list : plist);
var
  p : plist;
begin
  if list = nil then
     writeLn ('Spisok pust')
  else
  begin
    p := list;
 
    while p^.prev <> nil do
       p := p^.prev;
 
    while p <> nil do
    begin
       if p = list then
         write ('*');
       write (p^.data, #32);
       p := p^.next;
    end;
  end;
end;
в массив.. Делаю вот так
Код:
type mass=array[1..100] of double;
procedure PerenosIsSpiskavMassiv (list : plist;var a:mass;var n:byte);
//передаем в программу созданный массив и его размер, мы же заранее можем и не знать сколько 
//элементов в списке
var
  p : plist;
  i:integer;
begin
   if list = nil then
     writeLn ('Spisok pust')
  else
    begin
     p := list;
    { "перематываем" список, что бы list стал последним элементом }
        n:=0;
    while p^.next <> nil do
      begin
             n:=n+1;
         p := p^.next;
         a[n]:=p^.data;
         writeln(a[n]:0:2,' ');
         end;
   end;
И какая-то ошибка в цикле
Код:
while p^.next <> nil do
не выводит на экран ничего, даже просто добавив строку writeln('Privet') ничего не происходит.
kniazkinP вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массив типа char в виде списка saidmir Общие вопросы C/C++ 9 20.08.2010 21:38
Удаление последнего элемента из списка и реверс этого списка. Goose Общие вопросы C/C++ 8 16.05.2010 16:12
Как отсортировать массив Double с максимум в середине списка? SkAndrew Общие вопросы Delphi 4 12.02.2010 19:48
копирование из определенной ячейки dbgrid в массив xaero93 БД в Delphi 3 08.12.2009 20:30
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06