IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Структурированные файлы (Библиотека)
Совсем новичок
сообщение 26.11.2007 17:33
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


Вот как звучит задание:

В файле хранится информация о книгах, взятых в библиотеке:
Инвентарный номер
Название
Автор
Срок возврата книги
Признак того, сдана книга или нет.

Необходимо проверить, есть ли среди несданных книг "просроченные" (на текущую дату), сли такие книги есть, то сдать их (изменить признак) или продлить еще на один срок (изменить срок возврата). В новый файл поместить информацию о всех несданных книгах.

Вот что у меня есть


program lib;
uses crt;
type books=record
     number:integer;
     name:string;
     avtor:string;
          srok:record
          d:byte;
          m:byte;
          end;
     status:string;       {SDANA ILI NET(true or false)}
     end;
var
   book_file : file of books;
         rec : books;
    finder_d : byte;
    finder_m : byte;
   file_name : string;
         key : integer;
        exit : boolean;
           x : string;

{CREATE NAME OF FILE}

procedure name_of_file;
begin
     write('Enter name of file of data of book: ');
     readln(file_name);
end;

{ADD RECORD IN THE FILE}

procedure add_record;
begin
     writeln('Record N ',filepos(book_file)+1);
     with rec do
          begin
               write('Inventory number: ');
               readln(number);
               write('Name of the book: ');
               readln(name);
               write('Author of the book: ');
               readln(avtor);
               write('Srok vozvrata: ');
               readln(srok.d, srok.m);
               write('Status of the book: ');
               readln(status);
               write(book_file,rec);
          end;
end;

{CREATE NEW NULL FILE}

procedure create_new_nul_file;
begin
     name_of_file;
     assign(book_file,file_name);
     rewrite(book_file);
end;

{CREATE NEW FILE}

procedure create_new_book_file;
var
   i,n:integer;
begin
     name_of_file;
     assign(book_file,file_name);
     rewrite(book_file);
     writeln('Create records of file ',file_name);
     write('Enter count records: ');
     readln(n);
     for i:=1 to n do add_record;
     writeln('FILE CREATED');
     writeln('File of data have ',filesize(book_file),' records');
     close(book_file);
end;

{OUTPUT TEMP RECORD}

procedure output_record;
begin
     read(book_file,rec);
     with rec do
          begin
               write('N ',filepos(book_file),' : ');
               writeln('Name of book: ',name);
               writeln('Author of book: ',avtor);
               writeln('Srok vozvrata: ',srok.d,'.',srok.m);
               writeln('Status of book: ',status);
          end;
end;

{OUTPUT ALL RECORDS}

procedure output_all_records;
begin
     name_of_file;
     assign(book_file,file_name);
     {$I-}
     reset(book_file);
     {$I+}
     if IOresult = 0 then
        begin
             seek(book_file,0);
             writeln('OUTPUT INFORMATION ABOUT BOOK ','"',file_name,'"');
             while (not eof(book_file)) do output_record;
        end
     else
         writeln('File '+file_name+' is not');
end;

{REWRITE PARTS OF FILE}

procedure update_records;
var
   number_of_record:integer;
begin
     name_of_file;
     assign(book_file,file_name);
     {$I-}
     reset(book_file);
     {$I+}
     if IOresult = 0 then
        begin
             writeln('Enter number of rewrite record :');
             readln(number_of_record);
             seek(book_file,number_of_record-1);
             writeln('Zna4enie of this record: ');
             output_record;
             seek(book_file,number_of_record-1);
             writeln('Enter new zna4enie ',number_of_record,' record');
             add_record;
             close(book_file);
        end
     else
         writeln('” (c)«  б Ё¬Ґ­Ґ¬ '+file_name+' ­Ґ бгйҐбвўгҐв');
end;

{ADD RECORDS IN THE END OF FILE}

procedure add_records_in_the_end;
begin
     name_of_file;
     assign(book_file,file_name);
     {$I-}
     reset(book_file);
     {$I+}
     if IOresult = 0 then
        begin
             seek(book_file,filesize(book_file));
             add_record;
             writeln('Data is wrote. So ',filesize(book_file),' records');
             close(book_file);
        end
     else
         writeln('File with name '+file_name+' is not');
end;

{SEARCH PROSROCHENNYX BOOKS}

procedure find_book;
var
   book_file2:file of books;
   finder:integer;
   flag:boolean;
   counter:integer;
   d:char;
begin
     name_of_file;
     assign(book_file,file_name);
     writeln('Enter name of file for prosro4ennyx book: ');
     readln(x);
     assign(book_file2,x);
     rewrite(book_file2);
     {$I-}
     reset(book_file);
     {$I+}
     if IOresult = 0 then
        begin
             write('Enter Tekywyu daty: ');
             readln(finder_d, finder_m);
             flag:=false;
             counter:=0;
             while (not eof(book_file)) do
                   begin
                        read(book_file,rec);
                        with rec do
                             if ((srok.d<finder_d) and (srok.m<finder_m)) or
                                ((srok.d>=finder_d) and (srok.m<finder_m)) then
                                begin
                                     flag:=true;
                                     inc(counter);
                                     write('N ',filepos(book_file),' : ');
                                     writeln('Name of book: ',name);
                                     writeln('Author of book: ',avtor);
                                     writeln('Srok vozvrata: ',srok.d,'.',srok.m);
                                     writeln('Status of book: ',status);
                                     write(book_file2,rec);
                                     status:='y';
                                     srok.d:=finder_d;
                                     srok.m:=finder_m+1;
                                end;
                   end;
           {  seek(book_file,0);
              while (not eof(book_file)) do
                   begin
                        read(book_file,rec);
                        with rec do
                             if (srok.d<finder) and (srok.m<finder) then
                                begin
                                     status:='y';
                                     srok:=finder;
                                     srok.m:=srok.m+1;
                                     write(book_file,rec);
                                end;
                   end;}

             if flag then
                begin
                     writeln('Finded ',counter,' records');
 {  writeln('‚­ҐбвЁ ¤ ­­лҐ § ЇЁбЁ ў ­(r)ўл(c) д (c)«?');
  write('Yes or No');
    readln(d);
 if (d='y') or (d='Y') then
     begin
    create_new_nul_file;
 while (not eof(book_file)) do
   begin
   read(book_file,rec);
   with rec do
    if srok>finder then
           begin            write('N ',filepos(book_file),' : ');
   writeln('Ќ §ў ­ЁҐ Є­ЁЈЁ: ',name);
     writeln('Ђў(r)а Є­ЁЈЁ: ',avtor);
  writeln('‘а(r)Є ў(r)§ўа в : ',srok);
   writeln('Ђў(r)а Є­ЁЈЁ: ',avtor);
  writeln('Љ­ЁЈ  б¤ ­ : ',status);
    write(file_name,rec);
       end;
      close(name_file);
       end   }
                        end
             else
                 writeln('NO FIND RECORDS');
             close(book_file);
        end
     else
         writeln('File with name '+file_name+' is not');
end;

{=============MAIN PROGRAM==============}

begin
     exit:=false;
     clrscr;
     repeat
           writeln('       DATABASE OF BOOK');
           writeln;
           writeln('1 - CREATE NEW FILE');
           writeln('2 - VIEW INFORMATION ABOUT BOOKS');
           writeln('3 - REWRITE OLD RECORD');
           writeln('4 - ADD NEW RECORDS');
           writeln('5 - SEARCH PROSRO$ENNYX BOOK');
           writeln('6 - EXIT');
           write('Your choose: ');
           readln(key);
           case key of
                1:create_new_book_file;
                2:output_all_records;
                3:update_records;
                4:add_records_in_the_end;
                5:find_book;
                6:exit:=true;
           end;
           writeln('Executed. <ENTER>');
           readln;
           clrscr;
     until exit;
end.



Добавлено через 7 мин.
Я думаю, что вся собака зарыта в процедуре {SEARCH PROSROCHENNYX BOOKS} )) (что по английски знал -написал) нужно както сравнить текущую дату(вопрос как ее задать(как новую запись?)) и изменить статус тех книг которые просрочены (перевести дату на текущую и изменить сам статус книги).

И еще бы хотелось увидеть вариантную часть какого нить небольшого поля, например поля status(true/false)
как он сдесь будет выглядеть (делать вариантную часть других полей не хочется, уж слишком много всего получится).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 27.11.2007 1:02
Сообщение #2


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


status:string;  

почему не boolean?

имхо, условие неправильное:
                             if ((srok.d<finder_d) and (srok.m<finder_m)) or
                                ((srok.d>=finder_d) and (srok.m<finder_m)) then

если месяц меньше, нас день не волнует. а если месяц равен, но день меньше, книга просрочена.

если хочешь, прикрепи файл, на котором тестируешь - попробую проверить конкретнее.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Совсем новичок
сообщение 27.11.2007 19:27
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


Сначала было string, т.к писал yes/no, а щас думаю, через булин будет лучше.
Вот файл:

Добавлено через 9 мин.
У меня в процедуре статус изменяется для всех просроченных книг, тоесть не нужно запрашивать изменение статуса для кажой книги, но в при просмотре файла, обнаруживается, что статус изменился только у первой(записи) просроченной книги, статус же других просроч. книг не изменился. Почему так??


Прикрепленные файлы
Прикрепленный файл  LIBRARY.PAS ( 7.79 килобайт ) Кол-во скачиваний: 191
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 27.11.2007 21:00
Сообщение #4


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


прикрепи файл.
нет ни времени, ни желания набивать инфу о книгах.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Совсем новичок
сообщение 27.11.2007 23:12
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


Какой файл?
Если вы про файл в котором инфа о книгах хранится, то нету такого, файл то логический.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 28.11.2007 6:53
Сообщение #6


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Совсем новичок @ 27.11.2007 23:12) *

Какой файл?
Если вы про файл в котором инфа о книгах хранится, то нету такого, файл то логический.
И что это значит? Я не знаю классификации файлов на логические и.. какие еще? физические?.. только диски такие знаю.

Судя по программе (ты сам ее писал?) ты создаешь такой файл, а впоследствии читаешь его. Посмотри на диске повнимательнее.. должен быть smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Совсем новичок
сообщение 28.11.2007 15:58
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


Ниче себе, действительно есть такой файл, а я думал, что такие файлы в оперативной памяти хранятся smile.gif.
Прогу из учебника набирал, менял под себя, впринципе все работает, кроме последней процедуры, которая ищет(должна искать smile.gif ) просроченные книги и изменяет их статус, и день на текущий.
А сама информация неважна, я для примера вбил инфу о 5 книгах и это не суть важно.
Вот файл:
(пришлось в архив загнать, так как "у меня нет прав для загр. файла с таким расширением")


Прикрепленные файлы
Прикрепленный файл  FILE.rar ( 224 байт ) Кол-во скачиваний: 154
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 28.11.2007 21:24
Сообщение #8


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


с учетом, что файл (по определению) - это именованная область на диске... blink.gif
раз обещала - буду искать ошибку smile.gif


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Совсем новичок
сообщение 28.11.2007 21:43
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 28.11.2007 23:09
Сообщение #10


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Кое-что я исправила:
procedure find_book;
var
   book_file2:file of books;
   finder:integer;
   flag:boolean;
   counter:integer;
   d:char;
begin
   name_of_file;
   assign(book_file,file_name);
   writeln('Enter name of file for prosro4ennyx book: ');
   readln(x);
   assign(book_file2,x);
   rewrite(book_file2);
   {$I-}
   reset(book_file);
   {$I+}
   if IOresult = 0 then
     begin
     write('Enter current date: ');
     readln(finder_d, finder_m);
     flag:=false;
     counter:=0;
     while (not eof(book_file)) do
       begin
       read(book_file,rec);
       with rec do
       //другое условие
       if (srok.m<finder_m) or
          ((srok.m=finder_m) and (srok.d<finder_d)) then
         begin
         flag:=true;
         inc(counter);
         write('N ',filepos(book_file),' : ');
         writeln('Name of book: ',name);
         writeln('Author of book: ',avtor);
         writeln('Srok vozvrata: ',srok.d,'.',srok.m);
         writeln('Status of book: ',status);
         write(book_file2,rec);
         status:='y';
         srok.d:=finder_d;
         if finder_m=12 then //чтобы не было 13-го месяца
           srok.m:=1
         else
           srok.m:=finder_m+1;
         //записываем изменения в исходный файл
         seek(book_file,filepos(book_file)-1);
         write(book_file,rec);
         end;
       end;

       if flag then
         writeln('Finded ',counter,' records')
       else
         writeln('NO FIND RECORDS');
       close(book_file);
       //этот файл тоже закрываем
       close(book_file2);
     end
       else
         writeln('File with name '+file_name+' is not');
end;


Что не нравится, но не исправляла:
0) Если ты введешь дату в январе, а книжки должны были вернуть в декабре - они не будут считаться просроченными. Хочешь этого избежать - вводи поле - год (не только число и месяц).
1) Раз уж создаешь специальную запись для даты, почему бы этот тип не использовать для хранения текущей даты?

Ну это вот... что навскидку в голову пришло


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Совсем новичок
сообщение 29.11.2007 15:25
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


smile.gif Спасибо, ща буду дописывать прогу smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 29.11.2007 15:36
Сообщение #12


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(мисс_граффити @ 28.11.2007 21:24) *

с учетом, что файл (по определению) - это именованная область на диске...
Хм.. blink.gif Это где такое определение?.. Файлы могут быть на лентах, на каких-нибудь еще устройствах (не обязательно имеющих дисковую организацию).. Клавиатура и монитор, а также принтер - тоже файлы.
Вики http://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB дает определение, с которым я больше согласен..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Совсем новичок
сообщение 29.11.2007 15:43
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


Все прекрасно работает. Респект Вам за помощь. smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.11.2007 15:47
Сообщение #14


Гость






Цитата
Клавиатура и монитор, а также принтер - тоже файлы.
Ничего подобного: клавиатура и монитор - это ресурсы, с которыми можно работать, как с файлами. А можно - и не совсем как с файлами, а можно - совсем иначе...
 К началу страницы 
+ Ответить 
Совсем новичок
сообщение 29.11.2007 15:59
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


Ну а с вариантной частью сам попробую написать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
not_programmer
сообщение 18.12.2007 21:49
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Мужской

Репутация: -  0  +


Сделал вариантную часть. Сделал сортировку по полю NAME.
Никак не могу сделать сортировку по полю из вариантной части. Процедура не работает.
Вот: (извиняюсь за плохое форматирование)

program lib;
uses crt;
type sel=(book, journal);
     books=record
     number:integer;
     name:string;
     avtor:string;
     srok:record
          d:byte;
          m:byte;
          end;
     status:string;       {SDANA ILI NET(true or false)}
     case s:sel of
          book:(izdanie:integer);
          journal:(nomer:integer);
     end;
var
   book_file : file of books;
         rec : books;
    finder_d : byte;
    finder_m : byte;
   file_name : string;
         key : integer;
        exit : boolean;
           x : string;
        data : array[1..70] of books;

{CREATE NAME OF FILE}

procedure name_of_file;
begin
     write('Enter name of file of data of book: ');
     readln(file_name);
end;

{ADD RECORD IN THE FILE}

procedure add_record;
var select : integer;
begin
     writeln('Record N ',filepos(book_file)+1);
     Write('1 - Book  2 - Journal: ');
     ReadLn(select);
     case select of
     1:rec.s := book;
     2:rec.s := journal;
     end;
     with rec do
          begin
               write('Inventory number: ');
               readln(number);
               write('Name: ');
               readln(name);
               write('Author: ');
               readln(avtor);
               case s of
                 book:begin
                           write('Izdanie: ');
                           readln(izdanie);
                      end;
                 journal:begin
                              write('Nomer journala: ');
                              readln(nomer);
                         end;
                 end;
               write('Srok vozvrata(day.mes): ');
               readln(srok.d, srok.m);
               write('Status: ');
               readln(status);

          end;   write(book_file,rec);
end;

{CREATE NEW NULL FILE}

procedure create_new_nul_file;
begin
     name_of_file;
     assign(book_file,file_name);
     rewrite(book_file);
end;

{CREATE NEW FILE}

procedure create_new_book_file;
var
   i,n:integer;
begin
     name_of_file;
     assign(book_file,file_name);
     rewrite(book_file);
     writeln('Create records of file ',file_name);
     write('Enter count records: ');
     readln(n);
     for i:=1 to n do add_record;
     writeln('FILE CREATED');
     writeln('File of data have ',filesize(book_file),' records');
     close(book_file);
end;

{OUTPUT TEMP RECORD}

procedure output_record;
begin
     read(book_file,rec);
     with rec do
          begin
               write('N ',filepos(book_file),' : ');
               writeln('Name: ',name);
               writeln('Author: ',avtor);
               case s of
               book : begin
                           writeln('Indanie #: ',izdanie);
                      end;
               journal: begin
                             writeln('Nomer: ',nomer);
                        end;
               end;
               writeln('Srok vozvrata (day.mes)): ',srok.d,'.',srok.m);
               writeln('Status: ',status);
          end;
end;

{OUTPUT ALL RECORDS}

procedure output_all_records;
begin
     name_of_file;
     assign(book_file,file_name);
     {$I-}
     reset(book_file);
     {$I+}
     if IOresult = 0 then
        begin
             seek(book_file,0);
             writeln('OUTPUT INFORMATION ABOUT BOOK ','"',file_name,'"');
             while (not eof(book_file)) do output_record;
        end
     else
         writeln('File '+file_name+' is not');
end;

{REWRITE PARTS OF FILE}

procedure update_records;
var
   number_of_record:integer;
begin
     name_of_file;
     assign(book_file,file_name);
     {$I-}
     reset(book_file);
     {$I+}
     if IOresult = 0 then
        begin
             writeln('Enter number of rewrite record :');
             readln(number_of_record);
             seek(book_file,number_of_record-1);
             writeln('Zna4enie of this record: ');
             output_record;
             seek(book_file,number_of_record-1);
             writeln('Enter new zna4enie ',number_of_record,' record');
             add_record;
             close(book_file);
        end
     else
         writeln('” (c)«  б Ё¬Ґ­Ґ¬ '+file_name+' ­Ґ бгйҐбвўгҐв');
end;

{ADD RECORDS IN THE END OF FILE}

procedure add_records_in_the_end;
begin
     name_of_file;
     assign(book_file,file_name);
     {$I-}
     reset(book_file);
     {$I+}
     if IOresult = 0 then
        begin
             seek(book_file,filesize(book_file));
             add_record;
             writeln('Data is wrote. So ',filesize(book_file),' records');
             close(book_file);
        end
     else
         writeln('File with name '+file_name+' is not');
end;

{SEARCH PROSROCHENNYX BOOKS}

{procedure find_book;
var
   book_file2:file of books;
   finder:integer;
   flag:boolean;
   counter:integer;
   d:char;
begin
     name_of_file;
     assign(book_file,file_name);
     writeln('Enter name of file for prosro4ennyx book: ');
     readln(x);
     assign(book_file2,x);
     rewrite(book_file2);
     {$I-}
    { reset(book_file);
     {$I+}
    { if IOresult = 0 then
        begin
             write('Enter Tekywyu daty: ');
             readln(finder_d, finder_m);
             flag:=false;
             counter:=0;
             while (not eof(book_file)) do
                   begin
                        read(book_file,rec);
                        with rec do
                             if ((srok.d<finder_d) and (srok.m<finder_m)) or
                                ((srok.d>=finder_d) and (srok.m<finder_m)) then
                                begin
                                     flag:=true;
                                     inc(counter);
                                     write('N ',filepos(book_file),' : ');
                                     writeln('Name of book: ',name);
                                     writeln('Author of book: ',avtor);
                                     writeln('Srok vozvrata: ',srok.d,'.',srok.m);
                                     writeln('Status of book: ',status);
                                     write(book_file2,rec);
                                     status:='y';
                                     srok.d:=finder_d;
                                     srok.m:=finder_m+1;
                                end;
                   end;
           {  seek(book_file,0);
              while (not eof(book_file)) do
                   begin
                        read(book_file,rec);
                        with rec do
                             if (srok.d<finder) and (srok.m<finder) then
                                begin
                                     status:='y';
                                     srok:=finder;
                                     srok.m:=srok.m+1;
                                     write(book_file,rec);
                                end;
                   end;}

     {        if flag then
                begin
                     writeln('Finded ',counter,' records');
 {  writeln('‚­ҐбвЁ ¤ ­­лҐ § ЇЁбЁ ў ­(r)ўл(c) д (c)«?');
  write('Yes or No');
    readln(d);
 if (d='y') or (d='Y') then
     begin
    create_new_nul_file;
 while (not eof(book_file)) do
   begin
   read(book_file,rec);
   with rec do
    if srok>finder then
           begin            write('N ',filepos(book_file),' : ');
   writeln('Ќ §ў ­ЁҐ Є­ЁЈЁ: ',name);
     writeln('Ђў(r)а Є­ЁЈЁ: ',avtor);
  writeln('‘а(r)Є ў(r)§ўа в : ',srok);
   writeln('Ђў(r)а Є­ЁЈЁ: ',avtor);
  writeln('Љ­ЁЈ  б¤ ­ : ',status);
    write(file_name,rec);
       end;
      close(name_file);
       end   }
      {                  end
             else
                 writeln('NO FIND RECORDS');
             close(book_file);
        end
     else
         writeln('File with name '+file_name+' is not');
end;}

procedure find_book;
var
   book_file2:file of books;
   finder:integer;
   flag:boolean;
   counter:integer;
   d:char;
begin
   name_of_file;
   assign(book_file,file_name);
   writeln('Enter name of file for prosro4ennyx book: ');
   readln(x);
   assign(book_file2,x);
   rewrite(book_file2);
   {$I-}
   reset(book_file);
   {$I+}
   if IOresult = 0 then
     begin
     write('Enter current date: ');
     readln(finder_d, finder_m);
     flag:=false;
     counter:=0;
     while (not eof(book_file)) do
       begin
       read(book_file,rec);
       with rec do
       {//другое условие }
       if (srok.m<finder_m) or
          ((srok.m=finder_m) and (srok.d<finder_d)) then
         begin
         flag:=true;
         inc(counter);
         write('N ',filepos(book_file),' : ');
         writeln('Name: ',name);
         writeln('Author: ',avtor);
         case s of
               book : begin
                           writeln('Izdanie #: ',izdanie);
                      end;
               journal: begin
                             writeln('Nomer: ',nomer);
                        end;
               end;
         writeln('Srok vozvrata(day.mes): ',srok.d,'.',srok.m);
         writeln('Status: ',status);
         write(book_file2,rec);
         status:='y';
         srok.d:=finder_d;
         if finder_m=12 then{ //чтобы не было 13-го месяца  }
           srok.m:=1
         else
           srok.m:=finder_m+1;
       {  //записываем изменения в исходный файл  }
         seek(book_file,filepos(book_file)-1);
         write(book_file,rec);
         end;
       end;

       if flag then
         writeln('Finded ',counter,' records')
       else
         writeln('NO FIND RECORDS');
       close(book_file);
     {  //этот файл тоже закрываем}
       close(book_file2);
     end
       else
         writeln('File with name '+file_name+' is not');
end;

{SORT OF FILE}

Procedure sorting;
var i,j,n:integer;
    book_file3:file of books;
    sort:string;
begin
     name_of_file;
     assign(book_file,file_name);
     {$I-}
     reset(book_file);
     {$I+}
     if ioresult <> 0 then writeln('file with name '+file_name+' is not')
     else
         begin
              writeln;
              n:=0;
              while (not eof(book_file)) do begin
              read(book_file,rec);
              inc(n);
              data[n]:=rec;                 end;
              for i:=1 to n-1 do
                  for j:=1 to n-i do
                      if data[j].name>data[j+1].name then
                      begin
                           rec:=data[j];
                           data[j]:=data[j+1];
                           data[j+1]:=rec;
                      end;
   writeln('Enter name of sortfile: ');
   readln(file_name);
   assign(book_file,file_name);
   rewrite(book_file);
          for i:=1 to n do
          begin
          seek(book_file,i-1);
          rec:=data[i];
          write(book_file,rec);
          end;
          close(book_file); end;
     {          with rec do
          begin
               writeln('Inventory number: ',data[i].number);
               writeln('Name: ',data[i].name);
               writeln('Author: ',data[i].avtor);
               case s of
               book : begin
                           writeln('Indanie #: ',data[i].izdanie);
                      end;
               journal: begin
                             writeln('Nomer: ',data[i].nomer);
                        end;
               end;
               writeln('Srok vozvrata (4islo.mesyac)): ',data[i].srok.d,'.',data[i].srok.m);
               writeln('Status: ',data[i].status);
          end; write(book_file3,rec);
         end; }
end;
{ЭТА ПРОЦЕДУРА НЕ РОБИТ(ЗАПИСЫВАЕТ В УКАЗАННЫЙ ФАЙЛ РЕЗУЛЬТАТ РАБОТЫ НО ЗАПИСИ ОКАЗЫВАЮТСЯ НЕ ОТСОРТИРОВАННЫМИ)}
Procedure casesort;
var i,j,n,f,l:integer;
    book_file4:file of books;
    sort4:string;
begin
     i:=0;
     j:=0;
     n:=0;
     f:=0;
     l:=0;
     name_of_file;
     assign(book_file,file_name);
     {$I-}
     reset(book_file);
     {$I+}
     if ioresult <> 0 then writeln('file with name '+file_name+' is not')
     else
         begin
              writeln;
              n:=0;
              while (not eof(book_file)) do begin
              read(book_file,rec);
              inc(n);
              data[n]:=rec;                 end;
              for i:=1 to n-1 do
              for j:=1 to n-j do
              begin
                with data[j] do
                     begin
                          case s of
                            book: f:=izdanie;
                            journal: f:=nomer;
                          end;
                     end;
                with data[j+1] do
                     begin
                          case s of
                            book: l:=izdanie;
                            journal: l:=nomer;
                          end;
                     end;
                if (f>l) then
                   begin
                     rec:=data[j];
                     data[j]:=data[j+1];
                     data[j+1]:=rec;
                   end;
              end;
      {   for j:=1 to filesize() }
                   writeln('Enter name of sortfile: ');
                  close(book_file);
   readln(file_name);
   assign(book_file,file_name);
   rewrite(book_file);
          for i:=1 to n do
          begin
          seek(book_file,i-1);
          rec:=data[i];
          write(book_file,rec);
          end;
          close(book_file); end;
end;

{=============MAIN PROGRAM==============}

begin
     exit:=false;
     clrscr;
     repeat
           writeln('       DATABASE OF BOOK');
           writeln;
           writeln('1 - CREATE NEW FILE');
           writeln('2 - VIEW INFORMATION ABOUT BOOKS');
           writeln('3 - REWRITE OLD RECORD');
           writeln('4 - ADD NEW RECORDS');
           writeln('5 - SEARCH PROSRO$ENNYX BOOK');
           writeln('6 - SORTING BY NAME');
           writeln('7 - SORTING BY CASE');
           writeln('8 - EXIT');
           write('Your choose: ');
           readln(key);
           case key of
                1:create_new_book_file;
                2:output_all_records;
                3:update_records;
                4:add_records_in_the_end;
                5:find_book;
                6:sorting;
                7:casesort;
                8:exit:=true;
           end;
           writeln('Executed. <ENTER>');
           readln;
           clrscr;
     until exit;
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 18.12.2007 23:05
Сообщение #17


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(Lapp @ 29.11.2007 15:36) *

Хм.. blink.gif Это где такое определение?.. Файлы могут быть на лентах, на каких-нибудь еще устройствах (не обязательно имеющих дисковую организацию).. Клавиатура и монитор, а также принтер - тоже файлы.
Вики http://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB дает определение, с которым я больше согласен..

Да, такое определение.
Дается во многих учебниках по информатике и так же говорят большинство знакомых мне людей, преподающих информатику.
Вообще-то то, что размещается на устройствах последовательного доступа не принято называть файлами. Это с одной стороны. А с другой - сам видел устройства произвольного блочного доступа на ленте. Т.е. Устройства, имеющие дисковую организацию.
Опять же, сегодня диск - совершенно не обязательно круглый и крутится.
И еще: Ни клавиатура, ни монитор, ни принтер - не файлы. В ОС, конечно, для однообразия может быть унифицирован доступ к УСТРОЙТВАМ и ФАЙЛАМ, но это совершенно не означает, что это одно и то же. В частности, у файла есть назначение - хранить информацию. Устройства имеют более широкий спектр рименения.
Увы, в статье Википедии за стремлением дать возможно более универсальное определение файла потерялось его основное назначение - хранение информации.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 18.12.2007 23:50
Сообщение #18


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(volvo @ 29.11.2007 15:47) *

Ничего подобного: клавиатура и монитор - это ресурсы, с которыми можно работать, как с файлами. А можно - и не совсем как с файлами, а можно - совсем иначе...

Угу. И диск - тоже ресурс smile.gif. И с ним можно работать, как с файлом, а можно не совсем, как с файлом, а можно и совсем не как с файлом.. smile.gif

Цитата(andriano @ 18.12.2007 23:05) *

Да, такое определение.
....
Ни клавиатура, ни монитор, ни принтер - не файлы. В ОС, конечно, для однообразия может быть унифицирован доступ к УСТРОЙТВАМ и ФАЙЛАМ, но это совершенно не означает, что это одно и то же.
andriano, хорошо, убедил - не одно и то же! Я и сам удивляюсь, как мне в голову пришло назвать железяку с пластиком и кнопочками - файлом.. smile.gif уж лучше бы я напильник привел в пример... smile.gif

Господа, хочется поспорить - я не против smile.gif. Только когда я говорил, что клава и моник - файлы, я имел в виду именно то что с ними можно работать как с файлами. Извиняюсь, если выразился слишком свободно, мне казалось, что это понятно из контекста (привести опровергающий примера вполне достаточно для доказательства неверности утверждения)..

С определением файла, как области на диске согласиться невозможно, разве что в расчете на дальнейшее уточнение.. Доказывать не буду, вы все меня хорошо понимаете smile.gif.

PS
скажите, а /dev/null - это что? smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 19.12.2007 8:17
Сообщение #19


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(Lapp @ 18.12.2007 23:50) *
уж лучше бы я напильник привел в пример... smile.gif
Не волнуйся, на напильник бы тоже нашлись возражения. ;)
Цитата

Только когда я говорил, что клава и моник - файлы, я имел в виду именно то что с ними можно работать как с файлами.
Это специфика конкретной ОС. Скажи мне, как можно работать с клавиатурой как с файлом, скажем, в CP/M или в TR DOS, да даже в MS DOS?
Цитата
С определением файла, как области на диске согласиться невозможно, разве что в расчете на дальнейшее уточнение..
А придется. ;)
Понимаешь, нельзя требовать от определения из 4 слов той же полноты, что и от определения такого объема, как дано в Википедии (особенно если учесть, что в Википедии и при таком объеме слишком много претензий). Но, думается из 4 слов (да даже из 15) это выглядит наиболее адекватно.
Цитата
Доказывать не буду, вы все меня хорошо понимаете smile.gif.
Конечно понимаем. Я вот сам написал в прошлый раз, что файл предназначен для хранения информации, а теперь думаю, что следовало сказать, что он хранит данные.
Цитата

PS
скажите, а /dev/null - это что? smile.gif
А это - специфика конкретной ОС. Согласись, между утверждениями "Принципиально невозможно создать логический диск объемом более 2 Гб" и "MS DOS не поддерживает логические диски объемом более 2 Гбайт" есть некоторое различие.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 19.12.2007 11:26
Сообщение #20


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Да не имел я в виду CP/M. Не имел!
Я привел пример.
Чем этот пример провинился? Невсеобщностью? ... Так на то он и пример!!

нет слов.
andriano, проследи логику, не поленись, вернись к началу дискуссии. И перестань обвинять всех невежестве. Ей Богу, просто несолидно.

Знаем мы, в какой системе счисления и в каком представлении записано i.
Знаем про файлы.
Кончай флуд.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 20.07.2025 10:57
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"