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
<em><u /></em><u />Версия языка не указана, поэтому сделал в самой последней и в самой старой, которая нашлась.<em><u>
// PascalABC.Net 3.0</u></em>
function F(a, b, x: double):= (1 + Power(a, x)) / ((b - x) * Power(sin(x), 3));
const
a = 3.45; b = 1.62;
var
x := 0.1; xe := 3.1; h := 0.15;
y, xn, yn, xp, yp: double;
begin
yp := MaxDouble; yn := yp;
repeat
y := F(a, b, x);
if y > 0 then
begin if y < yp then begin yp := y;xp := x end end
else
if y < 0 then
begin if y < yn then begin yn := y;xn := x end end;
x += h;
until x > xe;
Writeln('Минимальное отрицательное ', yn, ' при х=', xn);
Writeln('Минимальное положительное ', yp, ' при х=', xp)
end.
<em><u>Тестовое решение:</u></em>
Минимальное отрицательное -446219.37704747 при х=3.1
Минимальное положительное 11.837734702392 при х=0.85
<em><u>{ Borland Pascal 7.01 }</u></em>
{$G+} {$N+}
uses Crt;
function F(a,b,x:double):double;
begin
F:=(1+exp(x*ln(a)))/((b-x)*exp(3*ln(sin(x))))
end;
const
a = 3.45; b = 1.62;
var
x,xe,h,y,xn,yn,xp,yp:double;
begin
ClrScr;
x := 0.1; xe := 3.1; h := 0.15;
yp := 1E308; yn := yp;
repeat
y := F(a, b, x);
if y > 0 then
begin if y < yp then begin yp := y; xp := x end end
else
if y < 0 then
begin if y < yn then begin yn := y; xn := x end end;
x := x + h;
until x > xe;
Writeln('Минимальное отрицательное ', yn, ' при х=', xn);
Writeln('Минимальное положительное ', yp, ' при х=', xp);
ReadKey
end.
<em><u>Тестовое решение:</u></em>
Минимальное отрицательное -4.46219377047470E+0005 при х= 3.10000000000000E+0000
Минимальное положительное 1.18377347023920E+0001 при х= 8.50000000000000E-0001
=> - это, видимо, операция "импликация"
Таблица истинности для нее:
a b a=>b
0 0 1
0 1 1
1 0 0
1 1 1
Теперь рассмотрим выражение: A=>(B=>A)
A B B=>A <span>A=>(B=>A)
0 0 1 1
0 1 0 1
1 0 1 1
1 1 1 1</span>