Нужна помощь с процедурами!!

кто может, помогите составить к задаче 2 процедуры......пожалуйста!!!!!1.процедуру ввода записей из текста файла(формат текстового файла задается самостоятельно) 2.процедуру удаления текущей или выделенной записиЗадача: выборка по жанру, отсортированная по авторам, с подсчетом кол-ва книг, выпущенных каждым автором в этом жанре. Библиотечный каталог а. ЖАНР б. Автор в. Название книги г. Издательство д. Год издания
type knigi=record;
Janr:string[8];
Avtor:string[20];
Nazvanie_knigi:string[15];
Izdatelstvo:string[8];
God_izdaniya:byte;
end;
const n=100;
var zap:knigi;
z:array[1..n] of knigi;
procedure vvod(var a:knigi);
begin
writeln('vvedite janr');
readln(a.janr);
writeln('vvedite Avtor');
readln(a.avtor);
writeln('vvedite Nazvanie knigi');
readln(a.Nazvanie knigi);
writeln('vvedite Izdatelstvo');
readln(a.Izdatelstvo);
writeln('vvedite God vipyska');
readln(a.God vipyska);
end;
написала процедуру ввода записей в диалоговом режиме с клавиатуры, а как быть с остальными двумя не знаю((
9 ответов

или выделенной записи
Что значит "выделенной"? Как выделяется?


тоже самое что текущей записи


Хорошо. Предлагаю вариант популярный в СУБД: Ты создаешь в записи еще одно поле Boolean, которое помечаешь если нужно удалить запись. После чего просмотрщик такие поля пропускает. А специальной процедурой (отдельно) все эти записи выбразываются из файла - годится такое? Будет твоим преподавателем считаться это как "удаление"


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


Весь код писать долгенько но: Вот смтори, добавляешь поле:
type knigi=record;
 <b>Deleted:boolean;</b>
 Janr:string[8];
 Avtor:string[20];
 Nazvanie_knigi:string[15];
 Izdatelstvo:string[8];
 God_izdaniya:byte;
end;
Вводишь допустим:
procedure VvodA;
var k:knigi;f:file of knigi;i:integer;
begin
 Assign(f,'c:\temp\kg');Rewrite(f);;
 for i := 0 to 3 do begin
 vvod(k); {это твоя процедура ввода}
 write(f,k);
 end;
 Close(f);
end;
Получаешь запись по номеру:
procedure getkniga(i:integer;var k:knigi);
begin
 AssignFile(f,'c:\temp\kg'); Reset(f);
 Seek(f,i);
 if not Eof(f) then Read(f,k);
 CloseFile(f);
end;
А вывод делаешь не учитывая удаленные:
procedure Vivod;
var k:knigi;f:file of knigi;i:integer;
begin
 Assign(f,'c:\temp\kg');Reset(f);;
 while not Eof(f) do
 <b>Read(f,k);
 if not k.Deleted then
 write(k.Nazvanie_knigi);</b>
 end;
 Close(f);
end;
Насчет процедуры пометки удаления сделай сама на основе VvodA Смысл понятен?


спасибо более менее понятно!! а как понять это: while not Eof(f) do Read(f,k); if not k.Deleted then write(k.Nazvanie_knigi);и это:Seek(f,i); if not Eof(f) then Read(f,k); CloseFile(f);можно еще спросить? в файл я делаю записи в таком виде:ЖАНР: 1.... Автор: .... Название книги:..... Издательство:... Год издания:.....ЖАНР: 2.... Автор: .... Название книги:..... Издательство:... Год издания:.....и так далее????? просто меняю значения?


while not Eof(f) do Read(f,k); if not k.Deleted then write(k.Nazvanie_knigi);
Пока не конец файла Читаем в переменную k очередную запись Если метка удаления у нее не стоит - выводим на экран
Seek(f,i); if not Eof(f) then Read(f,k); CloseFile(f);
Становимся в файле на i-тую позицию и если это не за пределами его читаем в переменку
в файл я делаю записи в таком виде:
Что ж ты сразу не сказала что у тебя нетипизированный файл то? То что он текстовый не много означает. Это совсем по другому делается...
(формат текстового файла задается самостоятельно)
А можно вместо этого типизированный файл применить, или задание жесткое?


вот как звучит заголовок: разработать структуру данных и содать типизиованный файл для указанной задачи, для этих данных реализовать след операции: