Страница 1 из 1

ФАЙЛЫ-Помогите пожалуста!!!!!!

Добавлено: 23 апр 2007, 20:38
verty
пожалуста помогите очень нужно решить.

создайте файл каталог книг. занесите в отдельный файл все произведения заданного пользователем автора. структура записи файла каталог книг: автор (40 знаков), название (80 знаков), год издания (4 знака), специальность (40 знаков). записи упорядочены по фамилиям автора.

заранее огромное спасибо

Re: ФАЙЛЫ-Помогите пожалуста!!!!!!

Добавлено: 24 апр 2007, 10:33
Хыиуду
Что за файл, какая среда разработки?
Если Паскаль - проще всего так (fin - входной файл, fout - выходной, s - строка, author - строка с автором)

Код: Выделить всё

readln(fin,s);
while pos(author,copy(s,1,40))=0 do
readln(f,s);
repeat
writeln(fout,s);
readln(fin,s);
until (pos(author,copy(s,1,40))=0) or eof(fin);
if pos(author,copy(s,1,40))<>0 then
writeln(fout,s);

Re: ФАЙЛЫ-Помогите пожалуста!!!!!!

Добавлено: 26 апр 2007, 22:45
verty
среда разработки - турбо паскаль. если можно напишите поподробнее, очень нужно.

Re: ФАЙЛЫ-Помогите пожалуста!!!!!!

Добавлено: 27 апр 2007, 11:17
Хыиуду
весь основной код я привел. остальное (описание переменных, открытие и закрытие файлов) - школьный курс.

Re: ФАЙЛЫ-Помогите пожалуста!!!!!!

Добавлено: 24 май 2007, 19:21
verty
вот условие:
создайте файл каталог книг. занесите в отдельный файл все произведения заданного пользователем автора. структура записи файла каталог книг: автор (40 знаков), название (80 знаков), год издания (4 знака), специальность (40 знаков). записи упорядочены по фамилиям автора.

вот текст проги:

Код: Выделить всё

program zadacha;
type cat=record
     avtor:string[40];
     nazv:string[80];
     god:string[4];
     spec:string[40];
     end;
     var s1,s2:string;
         i,n:integer;
         f1,f2:text;
         d:array [1..100] of cat;
         begin writeln('vvedite n');
               readln(n);
               writeln('vvedite put k 1-my faily');
               readln(s1);
               assign(f1,s1);
               writeln('vvedite put k 2-my faily');
               readln(s2);
               assign(f2,s2);
               rewrite(f1);
                for I:=1 to n do
                  with d[i] do
             begin writeln('vvesti avtora');
                   readln(avtor);
                   writeln(f1,avtor);
                   writeln('vvesti nazvanie');
                   readln(nazv);
                   writeln(f1,nazv);
                   writeln('vvesti god');
                   readln(god);
                   writeln(f1,god);
                   writeln('vvesti special');
                   readln(spec);
                   writeln(f1,spec);
                   end;
                   close(f1);
                   reset(f1);
                   rewrite(f2);
                   writeln('введите автора для поиска ');
                   readln(s1);
                   while not(eof(f1)) do
                   for i:=1 to n do
                  begin readln(f1,s2);
                   if s1=s2 then writeln(f2,d[i].nazv);
                       end;
                          close(f1);
                           close(f2);
                               end.
А как преобразовать эту прогу чтобы записи были упорядочены по фамилиям авторов????

Re: ФАЙЛЫ-Помогите пожалуста!!!!!!

Добавлено: 25 май 2007, 10:28
Хыиуду
В приведенном примере - никак, поскольку здесь сделано последовательное считывание С КЛАВИАТУРЫ в ФАЙЛ данных о книге. По идее файл должен формироваться ручками до начала работы программы. А считывание пойдет так
for i:=1 to n do
begin
readln(f,s);
d.avtor:=copy(s,1,40);
d.nazv=copy(s,41,80);
d.god=copy(s,121,4);
d.spec=copy(s,125,40:
end;
А потом отсортировать хотя бы тем же методом пузырька