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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2015, 20:40   #11
agrestid
Пользователь
 
Регистрация: 11.11.2015
Сообщений: 20
По умолчанию

помогите пожалуйста-нужно создать кольцевой список и записать его в файл и обратно
и обеспечить сортировку этого списка

хотя бы скелет самой программы

или подскажите,где искать информацию,везде какие-то обрывки

буду рад любой помощи)

Последний раз редактировалось Аватар; 15.11.2015 в 22:14.
agrestid вне форума Ответить с цитированием
Старый 25.11.2015, 14:45   #12
agrestid
Пользователь
 
Регистрация: 11.11.2015
Сообщений: 20
По умолчанию

Код:
procedure writetofile;
var
  f: file of book;
  p, head: pp;
begin

  AssignFile(f, 'd:\2.txt');
  rewrite(f);
  write(f, p^.dbook);
  p := p^.next;
  while p <> head do
  begin


    write(f,p^.dbook);
  {Write(f,p^.dbook.f );
    Write(f,p^.dbook.i );
    Write(f,p^.dbook.o );
    Write(f,p^.dbook.a );
    write(f,p^.dbook.t );  }

    p := p^.next;
  end;
  closefile(f);
  writeln('+');
end;
в чем ошибка в процедуре?

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 25.11.2015 в 15:32.
agrestid вне форума Ответить с цитированием
Старый 25.11.2015, 14:45   #13
agrestid
Пользователь
 
Регистрация: 11.11.2015
Сообщений: 20
По умолчанию

book-тип запись
agrestid вне форума Ответить с цитированием
Старый 25.11.2015, 15:37   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, неплохо бы увидеть описание типов book и pp

во-вторых, Вы, похоже, не понимаете, что такое типизированный файл и что означает запись file of book

я бы предположил, что запись в файл должна выглядеть примерно так:
Код:
procedure writetofile;
var
  f: file of book;
  p: pp;
begin
  AssignFile(f, 'd:\2.bin'); {файл типизированный (он же бинарный), не стоит ему давать расширение txt, это НЕ ТЕКСТ!}
  rewrite(f);
  p := head;
  while p<>nil do begin
     write(f, p^.dbook);
     p := p^.next;
  end;
  closefile(f);
end;

Последний раз редактировалось Serge_Bliznykov; 25.11.2015 в 16:14. Причина: добавил пропущенный begin в цикл while do
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.11.2015, 15:42   #15
agrestid
Пользователь
 
Регистрация: 11.11.2015
Сообщений: 20
По умолчанию

Код:
procedure Erase;
var
  s, h,l: PP;
begin
     l:=last^.next;
     l:=nil;
        s := head;
    head := head^.next;
    Dispose(s);
  while (head <> l) do
  begin
    s := head;
    head := head^.next;
    Dispose(s);
  end;


end;
еще проблема с процедурой очистки списка

список у меня кольцевой

Последний раз редактировалось agrestid; 25.11.2015 в 15:48.
agrestid вне форума Ответить с цитированием
Старый 25.11.2015, 15:42   #16
agrestid
Пользователь
 
Регистрация: 11.11.2015
Сообщений: 20
По умолчанию

Код:
type
  book = record
    f: string[20];

    i: string[20];
    o: string[20];
    a: string[20];
    t: Integer;
  end;
  PP = ^Pbook;
  Pbook = record
    dbook: book;
    next: pp;
  end;
var
  head,last: PP; //x:PP;
  cas,O: Integer;
   arr:array of book;
   ssss,sss:string;
описание переменных

Последний раз редактировалось agrestid; 25.11.2015 в 15:49.
agrestid вне форума Ответить с цитированием
Старый 25.11.2015, 15:51   #17
agrestid
Пользователь
 
Регистрация: 11.11.2015
Сообщений: 20
По умолчанию

и вот,если нужно,весь проект
Вложения
Тип файла: rar Новая папка.rar (34.8 Кб, 8 просмотров)
agrestid вне форума Ответить с цитированием
Старый 25.11.2015, 16:03   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

как-то всё у вас разбросано, порядка нет!

из того, что сразу бросилось в глаза (ошибки)
1) не ленитесь в начале программы ОБНУЛЯТЬ переменные.
например, head у Вас где присваивается nil в начале? Нигде!

2) из процедуры Vvod
Цитата:
Код:
procedure Vvod; // процедура добавления 1 элемента в список
var
  d: book;
  //Head: Pointer;
  p: PP;
  last: PP;
уберите описание переменной last
запомните, что те переменные, которые Вы описали внутри процедуры/функции существуют только пока выполняется процедура/функция. Закончилось выполнение и всё, кирдык. Всё, что было в переменной last - улетучилось.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.11.2015, 16:06   #19
agrestid
Пользователь
 
Регистрация: 11.11.2015
Сообщений: 20
По умолчанию

я специально держу указатель на первый элемент,чтобы потом было удобно выводить и сортировать список то кольцевой)


***я написал вам в лс***

Последний раз редактировалось agrestid; 25.11.2015 в 16:08.
agrestid вне форума Ответить с цитированием
Старый 25.11.2015, 16:09   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от agrestid Посмотреть сообщение
я сециально держу указатель на первый элемент,чтобы потом было удобно выводить и сортировать список то кольцевой)
это Вы делаете правильно.
можно и ещё один указатель на конечный (тот, что ссылается на голову списка) ДОПОЛНИТЕЛЬНО держать.

Без них работать со списком невозможно, указатели обязательно нужно сохранять.

теперь возвращаемся к процедуре очистки списка.
у меня проверить негде.
но я бы написал так:
Код:
// очистка списка с освобождением занятой памяти
procedure Erase;
var
  p,pnext : PP;
begin
  if head=nil then Exit; {список пустой, делать тут нечего}
  p:=head;
  while p<>nil do 
  begin
    pnext := p^.next;
    dispose(p);
    p := pnext;
  end; 
  head := nil; {ну и обнулим указатель на список}
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кольцевой список Good_Luck Помощь студентам 2 29.10.2015 19:08
[РЕШЕНО] Динамический список на Делфи/Паскаль. Требуется консультации Вадим Мошев Помощь студентам 2 18.04.2011 19:37
Кольцевой список counter Общие вопросы C/C++ 4 20.10.2008 08:09