Easy!
function Trim(s:string):string;
begin
delete(s,1,1);
delete(s,length(s),<span>length(s)</span>);
result:=s;
end;
Const
m = 10;
var
a: array[1..m+1] of integer;
i, k: integer;
begin
write ('Исходный массив: ');
for i := 1 to m do
begin
a[i] := random(100);
write (a[i],'; ');
end;
writeln;
write('Введите число: ');
readln(k);
for i:=m+1 downto 1 do
begin
a[i]:=a[i-1];
if a[i] mod 2=0 then
begin
a[i-1]:=k;
break;
end;
end;
write('Измененный массив: ');
for i := 1 to m+1 do
write (a[i],'; ');
<span>end.</span>
Ваша схема, в общем, верна. Её можно чуть упростить, убрать проверку Р.
Ответ:
10001010111
Объяснение:
[Log2(1111)]=<u>10</u>
2^10=1024
1111-1024=87
[Log2(87)]=<u>6</u>
2^6=64
87-64=23
[Log2(23)]=<u>4</u>
2^4=16
23-16=7
[Log2(7)]=<u>2</u>
2^2=4
7-4=3
[Log2(3)]=<u>1</u>
2^1=2
3-2=1
[Log2(1)]=<u>0</u>
Искомая двоичная запись числа состоит из 11 разрядов (от 0 до 10). Нумерация разрядов от 0 до 10 справа налево.
В выделенных номерах разрядов стоят единицы, в остальных нули.
Запишем в верхней строчке номера разрядов, в нижней значения:
10 9 8 7 6 5 4 3 2 1 0
1 0 0 0 1 0 1 0 1 1 1