type R = record v: integer; p: integer end; mR = array[1..n] of R;
function SummOfDigits(n: integer): integer; { Сумма цифр в трехзначном числе } begin SummOfDigits := (n div 100) + ((n mod 100) div 10) + (n mod 10) end;
procedure Swp(var a, b: R); { Меняет местами элементы a и b } var t: R; begin t.v := a.v; t.p := a.p; a.v := b.v; a.p := b.p; b.v := t.v; b.p := t.p end;
procedure Shell(var a: mR; n: integer); { сортировка методом Шелла } var i, j, step: integer;
begin step := n div 2; while step > 0 do begin for j := n - step downto 1 do begin i := j; while i <= n - step do begin if a[i].v > a[i + step].v then Swp(a[i], a[i + step]); i := i + step end end; step := step div 2 end end;
var a: array[1..n] of integer; b: mR; i: integer;
begin Randomize; Writeln('*** Исходные элементы массива ***'); for i := 1 to n do begin a[i] := Random(900) + 100; b[i].v := SummOfDigits(a[i]); b[i].p := i; Write(a[i]:4) end; Writeln; Shell(b, n); Writeln('*** Упорядоченные по возрастанию суммы цифр элементы массива ***'); for i := 1 to n do begin Write(a[b[i].p]:4) end; Writeln end.
Const dlin = 100; var b:array[1..dlin,1..2] of integer; i,j,x:integer; begin writeln('Исходный массив:'); for i:=1 to dlin do begin b[i,1]:=random(800)+100; write(b[i,1],' '); b[i,2]:=b[i,1] mod 10 + b[i,1] div 100 + b[i,1] div 10 mod 10; end; writeln;
for i:=1 to dlin-1 do for j:=dlin-1 downto i do if b[j,2]>b[j+1,2] then begin x:=b[j,2]; b[j,2]:=b[j+1,2]; b[j+1,2]:=x; x:=b[j,1]; b[j,1]:=b[j+1,1]; b[j+1,1]:=x; end;
writeln('Отсортированный массив:'); for i:=1 to dlin do write(b[i,1],' ');
var a,b,c:integer;
begin
writeln('Введите 2 целых числа');
readln(a,b);
for c:=a to b do
begin
writeln(c,'*',c,'=',sqr(c));
end;
end.