Работа с файлами - Free Pascal (186)

Узнай цену своей работы

Формулировка задачи:

Есть один созданный файл с именами клиентов. Необходимо создать второй файл с 3-мя записями, при этом, чтобы в записи "Номер клиента" было число, соответствующее порядковому номеру имени клиента из 1-го файла, т.е. предусматривалась проверка, что такой клиент вообще существует в файле 1. Как это организовать?

Решение задачи: «Работа с файлами»

textual
Листинг программы
type
  TNameStr = String[31];
  TDate = String[8];
  TClient = record
    Name: TNameStr;
    {...}
  end;
  TPurchess = record
    Date: TDate;
    Value: Real;
    Client: Integer;
  end;
var
  fc: file of TClient;
  fp: file of TPurchess;
  Clients: array [1..10] of TClient;
  ClientCnt: Integer;
  p: TPurchess;
begin
  Assign(fc,'file1.bin'); Reset(fc);
  while not EoF(fc) and (ClientCnt<High(Clients)) do begin
    Inc(ClientCnt); Read(fc,Clients[ClientCnt]);
  end;
  Close(fc); {$I-}
  Assign(fp,'file2.bin'); Reset(fp);
  if IOResult<>0 then Rewrite(fp);
  Seek(fp,FileSize(fp));
  with p do
    repeat
      Write('Дата: '); ReadLn(Date);
      if Date='' then Break;
      Write('Сумма: '); ReadLn(Value);
      repeat
        Write('Номер клиента: '); ReadLn(Client);
        if (Client>=Low(Clients)) and (Client<=ClientCnt) then begin
          WriteLn('Клиент: ',Clients[Client].Name);
          Break;
        end else WriteLn('*** Ошибочный номер клиента');
      until False;
      if not (Date='') then Write(fp,p);
    until Date='';
  Close(fp);
end.

Объяснение кода листинга программы

  1. Объявление типов данных: TNameStr (строка 31 символа), TDate (строка 8 символов), TClient (запись с полями Name типа TNameStr), TPurchess (запись с полями Date типа TDate, Value типа Real и Client типа Integer)
  2. Создание файлов fc и fp для работы с данными типов TClient и TPurchess соответственно
  3. Объявление массива Clients типа TClient на 10 элементов и переменной ClientCnt типа Integer
  4. Чтение данных из файла fc в массив Clients до тех пор, пока не закончится файл или не заполнится 10 элементов массива Clients
  5. Закрытие файла fc
  6. Открытие файла fp для записи
  7. Если файл fp не может быть открыт, то его создание и перезапись
  8. Перемещение позиции чтения файла fp в конец файла
  9. Ввод данных о дате, сумме и номере клиента с помощью функций ReadLn
  10. Проверка корректности номера клиента путем сравнения со значениями Low и ClientCnt
  11. Запись данных в файл fp
  12. Закрытие файла fp

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5