
Примечание:
Если к числу в двоичной системе счисления приписывать в конец цифры, то число увеличивается и никак не может уменьшится. Поэтому, n<f(n). Следовательно, перебор различных чисел, принадлежащих отрезку [90;160], можно смело ставить до 160 (можно и меньше, но лень расписывать вычисления).
ToBinary - функция перевода числа из десятичной СС в двоичную. Можно писать любой алгоритм, необязательно в точности использовать мой.
FromBinary - функция перевода числа из двоичной СС в десятичную. Можно писать любой алгоритм, необязательно в точности использовать мой.
func - функция, которая выполняет преобразования числа согласно условию (пункты 1, 2, 3, 4).
Код кажется большим только из-за процедур и begin/endов. Без них - всего то 7 строчек :). В скринах можно проверить, действительно ли 19 (40-22+1).
Пример работы:


Поделитесь своими знаниями, ответьте на вопрос:
var
f:Text;
n,nmax,nmin:integer;
begin
Assign(f,'input.txt'); Reset(f);
nmax:=-32786; nmin:=32767; {границы представления integer}
while not Eof(f) do begin
Readln(f,n);
if (n>0) and (n mod 2=0) then
if nmax<n then nmax:=n
else
if nmin>n then nmin:=n
end;
Close(f);
Assign(f,'output.txt'); Rewrite(f);
Writeln(f,nmin,' ',nmax);
Close(f)
end.
Задача 2.
const
m=100; { максимальное количество чисел в файле }
var
f:Text;
i,j,n,k:integer;
a:array[1..m] of integer;
begin
{ читаем данные из файла в массив }
Assign(f,'input.txt'); Reset(f);
i:=0;
while not Eof(f) do begin Inc(i); Readln(f,a[i]) end;
Close(f);
n:=i;
{ сортируем массив по возрастанию методом пузырька }
for i := 1 to n-1 do
for j := 1 to n-i do
if a[j] > a[j+1] then
begin k := a[j]; a[j] := a[j+1]; a[j+1] := k end;
{ заполняем файл из массива }
Assign(f,'output.txt'); Rewrite(f);
for i:=1 to n do Writeln(f,a[i]);
Close(f)
end.
Вложение: пример файла input.txt