defis

LP fan | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Эту задачку я решил - если кого заинтересует текст решения - в ПМ. У меня теперь другой вопрос:Есть задачка, также есть предложение как решить - надо только поправить где я неправ. Вот задача: В файле Data.txt хранятся записи с информацией о некоторой предметной области. Каждая запись хранится в текстовом виде в одной строке.Прочитать все записи из файла, отобрать нужные записи по введеному пользователем критерию и вывести их в файл Data1.txt использовать записи.: Библиотека.Поля записи:Фамилия автора, название книги, год издания, число страниц. Варианты отбора:по фамилии автора и по годам издания. Вот текст примерного решения. Код: label b1; a1; var f1,f:text; avtor:string; n,god:integer; glava,nazvanie,godik,chislo:string; begin writeln('Poisk v biblioteke!'); Assign(f,'c:\Data.txt'); Assign(f1,'c:\Data1.txt'); reset(f); writeln('Kak iskat budem - god izdania ili po avtoru?Esli po avtoru gmi 1, esli po godu izdania to 2!'),a; readln(a); if a:=1 then goto a1 else goto b1 a1: repeat write('Avtor->'); readln(glava); if length(glava)<>0 then begin reset(f); n:=0; while not EOF do begin readln(f,glava); readln(f,nazvanie); readln(f,godik); readln(f,chislo); if glava=avtor then append(f1); begin writeln(f1,glava,nazvanie,godik,chislo); end; close(f1); n:=n+1 end; if n=0 then writeln('Svedenii o',avtor,'netu'); end; until length(avtor)=0; b1: repeat write('god->'); readln(god); if length(god)<>0 then begin reset(f); n:=0; while not EOF do begin readln(f,glava); readln(f,nazvanie); readln(f,godik); readln(f,chislo); if godik=god then append(f1); begin writeln(f1,glava,nazvanie,godik,chislo); end; close(f1); if n=0 then writeln('Svedenii o',god,'netu'); end; until length(avtor)=0; end; | |