===== PascalABC.NET =====
procedure SortShell<T>(a: array of T);
where T: IComparable<T>;
// сортировка по Шеллу
begin
var n := a.Length;
var d := n div 2;
while d > 0 do
begin
var k := True;
while k do
begin
k := False;
for var i := 0 to n - d - 1 do
if a[i].CompareTo(a[i + d]) > 0 then begin
Swap(a[i], a[i + d]);
k := True
end
end;
d := d div 2
end
end;
begin
var a := ArrRandom(10, -20, 20); a.Println;
SortShell(a); a.Println
end.
type Man = record
name: String;
surname: String;
date: record
day: Integer;
month: Integer;
year: Integer;
end;
end;
var people: Array [1..100] of Man;
i,n,_year: Integer;
_name: String;
begin
Write('Enter number of man: ');
ReadLn(n);
for i := 1 to n do
With people[i] do
begin
WriteLn('Man[',i,']:');
Write('Enter name: ');
ReadLn(name);
Write('Enter surname: ');
ReadLn(surname);
Write('Enter birthday Day/Month/Year: ');
ReadLn(date.day, date.month, date.year);
WriteLn;
end;
Write('Enter year: ');
ReadLn(_year);
for i := 1 to n do
With people[i] do
if (date.year = _year) then
WriteLn('Name: ',name,' Surname: ',surname);
WriteLn;
Write('Enter name: ');
ReadLn(_name);
for i := 1 to n do
With people[i] do
if (name = _name) then
begin
Write(surname,' ',name);
WriteLn(' ',date.day,'.',date.month,'.',date.year);
end;
ReadLn;
end.
Объяснение: