Два задания на PascalABC.NET

Задание закрыто
Статус рабочей области:Завершено
Стоимость:500 рублей
Срок выполнения:1 день
Варианты оплаты:Планируется использовать Безопасную сделку
Дата публикации:2021-06-17 05:16
Обновлено:2021-06-17 05:53
Был(а) на сайте:2021-10-15 18:42

Два задания на PascalABC.NET

 
Задача

Написать две программы:
1. Сведения о книге состоят из фамилии автора, названия и года издания. Дан набор, состоящий из 1000 таких сведений. Найти:
а)названия книг данного автора, изданные с 1960 по 1980г;
б)упорядочить сведения о книгах по первой букве фамилии автора.
2.Информация о студенте состоит из его фамилии, возраста (число лет), пола и успеваемости (оценки по пяти предметам). Ввести
информацию о группе студентов, представляя ее в виде связанного одностороннего списка. Один элемент списка содержит информацию об одном студенте:
а) удалить из списка всех студентов, имеющих не менее трех двоек;
б) вычислить средний возраст студентов и средний возраст студенток.
вводные для первой:
Пушкин Сказка о рыбаке и рыбке 1979
Ушинский Четыре желания 1986
Перро Спящая красавица 1978
Иванов Дерево счастья 2001
Пушкин Сказки 1960
Гайдар Сказка о Военной Тайне, о Мальчише-Кибальчише и его твердом слове 1985
Гаршин Лягушка-путешественница 1977
Романовский Зеркало в старинном особняке 1983
И для второй...

Видеть полную информацию и оставлять заявки могут только авторизованные пользователи.
Исполнитель по этому заданию выбран.
  • 500 руб1 день
Решение второй задачи после того как поставите исполнителем

type
index=record
L:char;
P:integer;
end;

var
idx:array[1..1000] of index;
ti:index;
f:text;
s:array [0..50] of string;
t,a:string;
i,n,j,m,y:integer;
b:boolean;

procedure split(delimeter:string;s:string;var sr:array of string;var count:integer);
var
i:integer;
t:string;
procedure additem;
begin
if t<>'' then begin
inc(count);
sr[count-1]:=t;
t:='';
end;
end;
begin
count:=0;t:='';
for i:=1 to length(s) do
if pos(s[i],delimeter)=0 then t:=t+s[i] else additem;
additem;
end;

function str2int(s:string):integer;
var
c,r:integer;
begin
Val(s,r,c);
str2int:=r;
end;

procedure printNline(var vf:text;n:integer);
var
t:string;
begin
reset(vf);
for n:=1 to n do readln(vf,t);
writeln(t);
close(vf);
end;

begin
assign(f,'books.txt');
reset(f);
i:=0;
b:=false;
write('Введите фамилию автора:');readln(a);
writeln('Список книг автора "',a,'" за период с 1960 по 1980гг:');
while not eof(f) do begin
readln(f,t);
m:=m+1;
split(' ',t,s,n);
idx[m].L:=s[0][1];
idx[m].P:=m;
y:=str2int(s[n-1]);
if (a=s[0]) and ((y>=1960) and (y<=1980)) then begin writeln(t);b:=true;end;
end;
close(f);
if not (b) then writeln('Ничего не найдено:');
readln;
for i:=1 to m-1 do
for j:=i to m do
if idx[i].L>idx[j].L then begin
ti:=idx[i];idx[i]:=idx[j];idx[j]:=ti;
end;
writeln('Список книг, упорядоченный по первой букве:');
j:=0;
for i:=1 to m do begin
j:=j+1;
if j=23 then begin writeln('Нажмите "Enter" для продолжения...');j:=1;readln;end;
printNline(f,idx[i].P);
end;
readln;
end.

Оставлять заявки могут только авторизованные пользователи.