Для решения подобных заданий, нужно перевести данные цифры в маске и узле в двоичную с.с. и сделать поразрядную коньюнкцию(логическое умножение). 255(10) равно 111 111 11(2) значит, любое число при умножении на это, даст себя же, т.к. при умножении 1 на 0 будет 0, значит первые 2 цифры остануться теми же 224.23, а вот 240 и 251 нужно перевести в двоичнцю с.с. и посчитать. 240(10) это 11 110 000(2), а 251(10) равно 11 111 011, вместе они дадут 11 110 000(2), переводим это число в 10 с.с. это будет 240. При умножении на 0 будет 0,поэтому в конце 0 остаеться. В итоге у нас получилось:224.23.240.0 ответ:DFBH
program raf105;
const
n = 10;
var
a,b,c: array[1..n] of integer;
i,j,x,max,mpos,b1,c1: integer;
begin
write('Введите максимальное число: ');
readln(x);
writeln('Заполните массив из ',n,' элементов');
for i:=1 to n do
begin
readln(a[i]);
if a[i] > x
then begin
b1:= b1+1;
b[b1]:= a[i];
end
else begin
c1:= c1+1;
c[c1]:= a[i];
end;
end;
for i:=1 to c1 do
begin
max:= -10000;
for j:=i to c1 do
if c[j] >= max
then begin
max:= c[j];
mpos:= j;
end;
c[mpos]:= c[i];
c[i]:= max;
end;
for i:=1 to b1 do
a[i]:= b[i];
for i:=1 to c1 do
a[i+b1]:= c[i];
write('Отсортированный массив: ');
for i:=1 to n do
write(a[i],' ');
end.
PascalABC 3.4.2