Имеется текст документа, состоящий из нескольких параграфов. Каждый параграф начинается с заголовка и отделен пустой строкой от предыдущего параграфа. Текст разделен на страницы. Номер страницы проставлен в ее начале и выделен с обеих сторон знаком ‘-‘. Сформировать файл с оглавлением документа.- Pascal(Паскаль)

PROGRAM P2;
uses crt;
CONST
   FileIn = 'input.txt';
   FileOut = 'output.txt';
TYPE
   TextCyp = RECORD
                     Name             :STRING;
                    END;
 
VAR
   NewFile, PayrollFile :TEXT;
 
   Source               :TextCyp;
   ch:string;
   i:integer;
{ ------------------------- Procedure WriteRec ------------------------ }
PROCEDURE WriteRec(VAR s:string);
VAR
   f1:text;
BEGIN
    Assign(f1, FileOut);
    Append(f1);
    writeln(f1,s);
    close(f1);
END;
{ ------------------------- Procedure CreateFile ------------------------ }
PROCEDURE CreateFile(VAR s:string);
VAR
   f1:text;
BEGIN
    Assign(f1, FileOut);
    Rewrite(f1);
    writeln(f1,s);
    close(f1);
END;
 
   { ------------------------- Procedure ReadRec ------------------------ }
PROCEDURE ReadRec(VAR PayrollFile :TEXT;Employee :TextCyp;FileIn:string);
VAR
  Found ,str   :INTEGER;
  Header,chg : Boolean;
  Output,numpage : string;
BEGIN
  assign(PayrollFile,FileIn);
  reset(PayrollFile);
  output:='';
  numpage:='';
   while not eof(PayrollFile) do
         begin
          chg:=false;
          readln(PayrollFile,ch);
          if ch[1]='-' then
          begin
          numpage:= ch;
          chg:=true;
          header:=false;
          end;
          if Header then
                begin
                output:=numpage + ' '+ch;
                writeln(output);
                WriteRec(output);
                end;
          str:= length(ch);
          if (str = 0) or chg then
                begin
                Header := true;
                chg:=false;
                end
          else Header := false;
 
         end;
  close(PayrollFile);
end;
 
 
var
  s: string;
  k: integer;
 
begin
  clrscr;
  s:='Index';
  CreateFile(s);
  ReadRec(PayrollFile, Source,FileIn);
  Writeln('File created!');
  readln;
end.

Leave a Comment

22 + = 27