В двоичном представлении инвертировать все одиночные единицы, кроме старшего бита - Pascal ABC
Формулировка задачи:
В двоичном представлении инвертировать все одиночные единицы, кроме старшего бита.
Решение задачи: «В двоичном представлении инвертировать все одиночные единицы, кроме старшего бита»
textual
Листинг программы
Program P25;
Var C : Array [1..31] of integer;
Var i,n,k,p : integer;
Begin
write('n=');
readln(n);
for i:=1 to 31 Do C[i]:=0;
p:=31;
while (n>0) Do Begin
k:=n mod 2;
C[p]:=k;
p:=p-1;
n:=n div 2;
End;
k:=1;
while (C[k]=0) Do k:=k+1;
for i:=1 to 31 Do write(C[i]); writeln;
for i:=k+2 to 30 Do If (C[i]=1) And (C[i-1]=0) And (C[i+1]=0) then C[i]:=0;
for i:=1 to 31 Do write(C[i]); writeln;
k:=0;
for i:=1 to 31 Do k:=k*2+C[i];
writeln(k);
End.