pascal - Record (Структура)

Работа со структурой и запись её в файл:

program struct01;

type
  TBook = record
    author: string[40];{ автор, строка }
    title: string[80]; { название, строка}
    count: integer     { количество, целое }   
  end;

const
  N = 100;

var
  B: TBook; { одна структура }
  Books: array[1..N] of TBook; { массив }
  F: file of TBook;
  i: integer;

begin
  writeln('Размер типа TBook = ', sizeof(TBook)); { 24 }
  
  Assign(F, 'books.dat');
  Rewrite(F);
  B.author := 'Пушкин А.С.';
  B.title := 'Полтава';
  B.count := 1;
  write(F, B); 
  
  B.author := 'Тургенев И.С.';
  B.title := 'Муму';
  B.count := 2;
  write(F, B);
  
  Close(F);
  
  Assign(F, 'books.dat');
  Reset(F);
  
  i := 0;
  while not Eof(F) do 
  begin { до конца файла }
    i := i + 1;
    Read(F, Books[i])
  end;
  
  writeln(B.author, ', ', B.title, ', ', B.count);
  writeln( 'i=', i);
  if i > 0 then
    writeln(Books[1].author, ', ', Books[1].title, ', ', Books[1].count);
    
  Close(F);
  
end.


Сортировка массива структур:

program struct02;

type
  TBook = record
    author: string[40];{ автор, строка }
    title: string[80]; { название, строка}
    count: integer     { количество, целое }   
  end;

const
  N = 3;

var
  B: TBook; { одна структура }
  Books: array[1..N] of TBook; { массив }
  i, j: integer;

begin

  B.author := 'Пушкин А.С.';
  B.title := 'Полтава';
  B.count := 1;
  Books[1] := B;

  B.author := 'Тургенев И.С.';
  B.title := 'Муму';
  B.count := 2;
  Books[2] := B;

  B.author := 'Булгаков М.А.';
  B.title := 'Мастер и Маргарита';
  B.count := 5;
  Books[3] := B;
  
  for i:=1 to N do 
    writeln(Books[i].author, '; ',
            Books[i].title,  '; ',
            Books[i].count);    
 
  writeln('--- Сортировка ---');
  
  for i:=1 to N-1 do
    for j:=N-1 downto i do
      if Books[j].author > Books[j+1].author  then
      begin
        B          := Books[j]; 
        Books[j]   := Books[j+1];
        Books[j+1] := B
      end;
    
  for i:=1 to N do 
    writeln(Books[i].author, '; ',
            Books[i].title,  '; ',
            Books[i].count);    
end.


Сортировка указателей массива структур:

program struct03;

type
  TBook = record
    author: string[40];{ автор, строка }
    title: string[80]; { название, строка}
    count: integer     { количество, целое }   
  end;
  
  PBook = ^TBook;

const
  N = 4;

var
  B: TBook; { одна структура }
  Books: array[1..N] of TBook; { массив }
  p1: PBook;
  p: array[1..N] of PBook; { массив указателей типа PBook }
  i, j: integer;

begin
  B.author := 'Пушкин А.С.';
  B.title := 'Полтава';
  B.count := 1;
  Books[1] := B;

  B.author := 'Тургенев И.С.';
  B.title := 'Муму';
  B.count := 2;
  Books[2] := B;
  
  B.author := 'Булгаков М.А.';
  B.title := 'Мастер и Маргарита';
  B.count := 5;
  Books[3] := B;
  
  B.author := 'Пелевин В.';
  B.title := 'Generation П';
  B.count := 4;
  Books[4] := B;  
 
  for i := 1 to N do
    writeln(Books[i].author, ', ', Books[i].title, ', ', Books[i].count);
    
 
  { Часть 2 }
  writeln('---=== Часть 2 ===---');
  for i:=1 to N do 
    p[i]:= @Books[i];

  for i:=1 to N do 
    writeln(p[i]^.author, '; ',
            p[i]^.title,  '; ',
            p[i]^.count);

  writeln('---=== Сортировка Указателей ===---');
  
  for i:= 1 to N-1 do
    for j:= N-1 downto i do
      if p[j]^.author > p[j+1]^.author then begin
        p1     := p[j];
        p[j]   := p[j+1];
        p[j+1] := p1
      end; 

  for i:=1 to N do 
    writeln(p[i]^.author, '; ',
            p[i]^.title,  '; ',
            p[i]^.count);

  writeln('---=== Реально оставшееся состояние массива ===---');
  
  for i:=1 to N do 
    writeln(Books[i].author, '; ',
            Books[i].title,  '; ',
            Books[i].count);   
end.


Вложения:
Скачать этот файл (struct-01.pas)struct-01.pas[ ]0.9 Кб
Скачать этот файл (struct-02.pas)struct-02.pas[ ]1 Кб
Скачать этот файл (struct-03.pas)struct-03.pas[ ]1 Кб

Рейтинг

Проблемы с госуслугами, медленный интернет или плохая связь? Напишите об этом — Минцифры поможет с решением