Задача 5.2.2.
Условие
Разработать программу, составив для каждого задания свою таблицу, подобную заданию 5.2.1. Выбор типа исходных и выходных данных зависит от языка программирования, программы обучения и желания обучаемого.
О каждой книге имеются следующие сведения: фамилия и инициалы автора, название, год издания и количество запросов за последние три года. Вывести фамилии авторов и названия книг, изданных до 1980 года, по которым нет запросов.
Листинг
program project1;
uses
SysUtils, Classes, dateutils;
type
TBook = record
Author: string; //Ф.И.О. Автора
Name: string; //Название книги
PublYear: integer; //Год издания
Requests: integer; //Запросы за последние три года
end;
TBooksList = array of TBook;
function Book(Author, Name: string; PublYear, Requests: integer): TBook;
var
s: TBook;
begin
s.Author := Author;
s.Name := Name;
s.PublYear := PublYear;
s.Requests := Requests;
Result := s;
end;
function LoadBooks(): TBooksList;
var
SFile: TStringList;
i: integer;
BList: TBooksList;
begin
SFile := TStringList.Create();
SFile.LoadFromFile('Books.csv');
with TStringList.Create() do
begin
Delimiter := ':';
QuoteChar := '"';
StrictDelimiter := True;
for i:=0 to SFile.Count-1 do
begin
DelimitedText := SFile.Strings[i];
SetLength(BList, length(BList) + 1);
BList[High(BList)] := Book(Strings[0], Strings[1], StrToInt(Strings[2]),
StrToInt(Strings[3]));
end;
end;
Result := BList;
end;
procedure PrintBooks(const a: TBooksList);
var
i: integer;
begin
for i:=Low(a) to High(a) do
begin
writeln(' ', a[i].Author + ' "', a[i].Name + '"');
end;
end;
procedure PrintSpecificStudents(const a: TBooksList);
var
sl: TBooksList;
i: integer;
begin
//Найдём студентов моложе 16-ти лет
for i:=Low(a) to High(a) do
begin
if a[i].PublYear < 1980 then
begin
SetLength(sl, length(sl)+1);
sl[High(sl)] := a[i];
end;
end;
if length(sl) > 0 then
begin
writeln('Список книг, изданных раньше 1980-го, по которым не было запросов'#13#10'за последние 3 года:');
PrintBooks(sl);
end
else
writeln('В таблице нету книг без запросов, изданных раньше 1980-го года.')
end;
var
Students: TBooksList;
begin
Students := LoadBooks();
PrintSpecificStudents(Students);
readln();
end.
Результаты работы программы
Переменные
Класс |
Имя |
Тип |
Структура |
Назначение |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Блок-схема