Известны данные о росте 15 юношей класса, упорядоченные по убыванию. Ни одна пара учеников не имеет одинаковый рост. В начале учебного года в класс поступил новый ученик. Какое место в перечне ростов займет рост этого ученика (известно, что его рост не совпадает с ростом ни одного из учеников класса, превышает рост самого низкого ученика и меньше роста самого высокого). Условный оператор не использовать
const n = 5; var a: array [1..n] of integer; i,k,x,l: integer; t: boolean; begin for i := 1 to n do read(a[i]); k := 0; for i := 1 to n do begin t := true; x := a[i]; if x < 0 then x := -x; l := 1; while l <= x do l := l*2; l := l div 2; while t and (l > 1) do begin t := x >= l; if t then x := x - l; t := t = (x mod 2 <> 0); x := x div 2; l := l div 4; end; if t then k := k + 1 end; write(k) end.
{2}
const n = 10; var a,d: array [1..n] of integer; i,j,k: integer; begin for i := 1 to n do a[i] := 100 + random(900); for i := 1 to n do begin d[i] := 0; for j := 1 to a[i] do if a[i] mod j = 0 then d[i] := d[i] + 1; end; for i := 1 to n-1 do begin k := i; for j := i + 1 to n do if d[j] < d[k] then k := j; j := a[k]; a[k] := a[i]; a[i] := j; j := d[k]; d[k] := d[i]; d[i] := j; end; for i := 1 to n do write(a[i],' ') end.
{3}
const n = 10; l = 3; var a: array [1..n] of integer; m: array [1..l] of integer; i,j,k: integer; begin for i := 1 to n do begin a[i] := random(1001); write(a[i],' ') end; writeln; for i := 1 to l do m[i] := -1; for i := 1 to n do begin j := 1; while j <= l do begin if (a[i] = m[j]) then j := l else if (a[i] < m[j]) or (m[j] = -1) then begin for k := l downto j+1 do m[k] := m[k-1]; m[j] := a[i]; j := l end; j := j + 1 end; end; for i := 1 to l do if m[i] <> -1 then write(m[i],' ') end.
const
n = 5;
var
a: array [1..n] of integer;
i,k,x,l: integer;
t: boolean;
begin
for i := 1 to n do read(a[i]);
k := 0;
for i := 1 to n do
begin
t := true;
x := a[i]; if x < 0 then x := -x;
l := 1;
while l <= x do l := l*2; l := l div 2;
while t and (l > 1) do
begin
t := x >= l;
if t then x := x - l;
t := t = (x mod 2 <> 0);
x := x div 2;
l := l div 4;
end;
if t then k := k + 1
end;
write(k)
end.
{2}
const
n = 10;
var
a,d: array [1..n] of integer;
i,j,k: integer;
begin
for i := 1 to n do
a[i] := 100 + random(900);
for i := 1 to n do
begin
d[i] := 0;
for j := 1 to a[i] do
if a[i] mod j = 0 then
d[i] := d[i] + 1;
end;
for i := 1 to n-1 do
begin
k := i;
for j := i + 1 to n do
if d[j] < d[k] then k := j;
j := a[k];
a[k] := a[i];
a[i] := j;
j := d[k];
d[k] := d[i];
d[i] := j;
end;
for i := 1 to n do
write(a[i],' ')
end.
{3}
const
n = 10;
l = 3;
var
a: array [1..n] of integer;
m: array [1..l] of integer;
i,j,k: integer;
begin
for i := 1 to n do
begin
a[i] := random(1001);
write(a[i],' ')
end;
writeln;
for i := 1 to l do
m[i] := -1;
for i := 1 to n do
begin
j := 1;
while j <= l do
begin
if (a[i] = m[j]) then j := l else
if (a[i] < m[j]) or (m[j] = -1) then
begin
for k := l downto j+1 do
m[k] := m[k-1];
m[j] := a[i];
j := l
end;
j := j + 1
end;
end;
for i := 1 to l do
if m[i] <> -1 then write(m[i],' ')
end.
begin
Range(1,20).Tabulate(x->sqrt(x)).Println(NewLine)
end.
Результат
(1,1)
(2,1.4142135623731)
(3,1.73205080756888)
(4,2)
(5,2.23606797749979)
(6,2.44948974278318)
(7,2.64575131106459)
(8,2.82842712474619)
(9,3)
(10,3.16227766016838)
(11,3.3166247903554)
(12,3.46410161513775)
(13,3.60555127546399)
(14,3.74165738677394)
(15,3.87298334620742)
(16,4)
(17,4.12310562561766)
(18,4.24264068711928)
(19,4.35889894354067)
(20,4.47213595499958)
Традиционное решение
var
i:integer;
begin
for i:=1 to 20 do Writeln(i:2,sqrt(i):16:12)
end.
Результат
1 1.000000000000
2 1.414213562373
3 1.732050807569
4 2.000000000000
5 2.236067977500
6 2.449489742783
7 2.645751311065
8 2.828427124746
9 3.000000000000
10 3.162277660168
11 3.316624790355
12 3.464101615138
13 3.605551275464
14 3.741657386774
15 3.872983346207
16 4.000000000000
17 4.123105625618
18 4.242640687119
19 4.358898943541
20 4.472135955000