староеProgram celuechisla;
var r,p,l,i,n:integer;d:real;
begin
write('vvedite chislo' );
readln (n);
r:=0;
while n>1 do
begin
d:=n mod 2;
if d<>0
then r:=(10*r+1)
else r:=10*r;
write (r);
writeln;
n:=n div 2;
end;
{дальше ещё много-много, но это не имеет значения}
В результате выполнения этого куска получается:
vvedite chislo 585
1
10
100
1001
10010
-30972
17961
-16998
26628
Так какого хрена?
Новый, полный и безобразный, но такой рабочий код. Я оставлю его себе на память здесь.Program celuechisla;
var p,i,n,k:integer;d:real;r,l,m:longint;
begin
write('vvedite chislo');
readln (n);
r:=0;
m:=n;
while n>1 do
begin
d:=n mod 2;
if d<>0
then r:=(10*r+1)
else r:=10*r;
n:=n div 2;
end;
r:=(r*10+1);
p:=0;
l:=r;
repeat
l:=l div 10;
p:=p+1;
until l=0;
for i:=1 to p do
begin
l:=r mod 10;
r:=r div 10;
write (l);
end;
k:=m mod 2;
if k=0
then write ('0');
readln
end.
upd: Спасибо mask of mr. Pruett и Просто_Сидни
upd2: Перевод целых и дробных чисел в двоичную систему, я сделал этоProgram celuechisla;
var p,i,n,k:integer;d,o,f,g:real;r,l,m:longint;
begin
write('vvedite celuiy chast chisla');
writeln;
readln (n);
writeln;
write('vvedite drobnuiy chast chisla');
writeln;
readln (o);
writeln;
write (n,'=');
r:=0;
m:=n;
while n>1 do
begin
d:=n mod 2;
if d<>0
then r:=(10*r+1)
else r:=10*r;
n:=n div 2;
end;
r:=(r*10+1);
p:=0;
l:=r;
repeat
l:=l div 10;
p:=p+1;
until l=0;
for i:=1 to p do
begin
l:=r mod 10;
r:=r div 10;
write (l);
end;
k:=m mod 2;
if k=0
then write ('0');
write (',');
p:=0;
g:=o;
repeat
g:=g/10;
g:=int(g);
p:=p+1;
until g=0;
for i:=1 to p do
begin
o:=o/10
end;
repeat
o:=o*2;
f:=int(o);
o:=frac(o);
write (f:1:0);
until o=0;
readln
end.