Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Динамические структуры

Автор: Brad Bellick 8.05.2008 23:19

Здравствуйте! Помогите пожалуйста доделать следующую процедуру(CreateList):


type
PBook= ^TBook;
TBook=record
Next:PBook;
Author:string[15];
Name:string[41];
Publish:string[7];
year:word;
pages:word;
end;
var
Book,
Beglist:Pbook;
Rel:pointer;
a:TBook;
Fbooks:file of TBook;
FI, FO:text;

procedure createlist;
begin
...
end;


procedure writelist(headline:string);
begin
rewrite(FO);
Writeln(FO);
Writeln(FO, Headline);
book:=beglist;
while book<> NIL do
begin
with book^ do
writeln(FO, Author:15, Name:41, Publish:7, Year:5, Pages:4);
book:=book^.next;
end;
close(FO);
end;
procedure SortAuthor;
var stop, first:boolean;
book1, book2:Pbook;
begin
repeat
stop:=true;
book:=beglist;
first:=true;
while book^.next <> NIL do
begin
if book^.Author > Book^.next^.Author then begin
book1:=book;
book:=book^.next;
if first then
beglist:=book
else
begin
book2:=beglist;
while book2^.next <> book1 do
book2:=book2^.next;
book2^.next:=book
end;
book1^.next :=book^.next;
book^.next:=book1;
stop:=false;
end;
first:=false;
book:=book^.next;
end;
until stop;
end;
procedure writefile;
begin
assign (Fbooks, 'z6file.txt');
rewrite(Fbooks);
book:=beglist;
while book <> NIL do
begin
write(Fbooks, Book^);
book:=book^.next;
end;
close(Fbooks);
end;
procedure readfile;
var
k:integer;
book1:Pbook;
begin
reset(FBooks);
k:=filesize(FBooks);
release(Rel);
beglist:=NIL;
while k>= 0 do
begin
book1:=book;
dec(k);
if k<0 then
break;
seek(FBooks, k);
New(book);
if beglist = NIL then
Beglist:=book
else
book1^.next:=book;
read(FBooks, Book^);
Book^.next:=NIL
end;
close(Fbooks);
end;
begin
Mark(Rel);
Createlist;
assign(FO, 'z6.res');
writelist('Spisok:');
SortAuthor;
Writelist('otsortirovannij spisok:');
Writefile;
readfile;
writelist('otsortirovano v protivopoloznom porjadke:');
release(Rel);
END.






















Автор: compiler 8.05.2008 23:40

а что этот CreateList должен делать?
Чтение из файла или из input-а? Каково условия конца ввода?

Автор: Brad Bellick 9.05.2008 1:02

создает динамический список. (т.е. в этой процедуре тебя просят ввести инф. о книгах). Чтение из файла.

Автор: klem4 9.05.2008 1:19

Хм. А зачем тогда procedure readfile; ?

Автор: Brad Bellick 9.05.2008 4:04

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

Автор: Brad Bellick 10.05.2008 20:05

Ну какие-то идеи есть?

Автор: мисс_граффити 11.05.2008 6:35

непонятно, что надо сделать
чтение из файла? createlist запрашивает его имя, открывает, считывает из файла записи и делает из них список?

Автор: Brad Bellick 11.05.2008 16:11

Процедура Createlist cчитывает переменные и записывает их в динамический список. Далее остальные процедуры уже должны сохранять информацию в типизированный файл, отсортировывают список по Автору, Названию, Издателю или страницы книг, в данном случае сортировка происходит по названию автора. Также эта программа должна считывать информацию с типизированного файла в противоположном порядке и стирать звено. И наконец процедура Readfile все произведенные операции ( которые выполняли другие процедуры ) записывает в файл.

Автор: Brad Bellick 11.05.2008 20:48

Helpppp!! smile.gif

Автор: compiler 11.05.2008 21:07

Цитата(Brad Bellick @ 11.05.2008 12:11) *
И наконец процедура Readfile все произведенные операции записывает в файл.
хм... ты уверен что через read(FBooks, Book^) можна что-либо записать в файл? и если так, то зачем writelist? или тебе нужны отдельно функции для работы с типизированными/текстовыми файлами? в общем не плохо бы увидеть задание, а то телепаты в отпуске)

Автор: Brad Bellick 11.05.2008 21:40

1) CreateList считывает переменные и записывает в файл(т.е. сначала вводим информацийу про автора, издателя, количество страниц в книге и т.д. , а потом все это записываем в динамический список)
2) Writelist сохраняет инф в типизированном файле.
3) SortAuthor сортирует список по названию автора.
4) Writefile считывает информацию из типизированного файла в противоположном порядке и стирает одно звено
5) Readfile все проделанные операции записывает в файл. (т.е. изначальный список, отсортированный список и прочтенный в противоположном порядке список).

Программа должна предусмотреть все эти операции.

Нужно использовать односвязанный динамический список.


Незнаю как еще более подробно я тут могу описать еще.

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

Автор: volvo 11.05.2008 21:53

Цитата
соответственно все эти остальные процедуры верны.
Вот значит тот, кто это сказал, пускай и пишет недостающую процедуру. А здесь бредом не занимаются...

Автор: Brad Bellick 11.05.2008 22:10

Значит мой учитель начудил?

Добавлено через 2 мин.
Не хотите помогать или не знаете так и скажите.