Const n=10;
var a,d:array[1..n] of integer;
k,i,j,t:integer;
begin
Randomize;
for i:=1 to n do begin
a[i]:=random(900)+100;
write(a[i]:4);
end;
writeln;
writeln('Количество делителей:');
for i:=1 to n do begin
k:=2;
for j:=2 to a[i] div 2 do
if a[i] mod j = 0 then k:=k+1;
d[i]:=k;
write(d[i]:4);
end;
writeln;
for i:=1 to n-1 do
for j:=1 to n-i do
if d[j]>d[j+1] then
begin
t:=d[j]; d[j]:=d[j+1]; d[j+1]:=t;
t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t;
end;
Writeln('Отсортированный массив:');
for i:=1 to n do Write(a[i],' ');
Writeln
end.
Пример:
882 524 890 505 911 792 772 458 507 368
Количество делителей:
18 6 8 4 2 24 6 4 6 10
Отсортированный массив:
911 505 458 524 772 507 890 368 882 792
C = 0
while p != 0:
p = int(input())
c += 1
print(c)
===== PascalABC.NET =====
function S(a: array[,] of integer) :=
a.Cols.Where(p -> p.All(q -> q >= 0)).SelectMany(p -> p).Sum;
function M(a: array[,] of integer): integer;
begin
var n := a.RowCount;
Result := integer.MaxValue;
var s: integer;
for var i := 0 to n - 2 do
begin
s := 0;
for var j := 0 to i do
s += Abs(a[i - j, j]);
if s < Result then
Result := s
end;
for var j := 1 to n - 1 do
begin
s := 0;
for var i := n - 1 downto j do
s += Abs(a[i, n - i + j - 1]);
if s < Result then
Result := s
end
end;
begin
var n := ReadInteger('n =');
var a := MatrRandom(n, n, -10, 30);
a.Println;
S(a).Println;
M(a).Println;
end.
Текстовый числовая звуковая графическая комбинированная