Напишите программу, которая переводит переданное её целое число (возможно, отрицательное) в двоичный код. используйте процедуру входные данные 5 выходные данные 101 входные данные -14 выходные данные -1110
Procedure Dec2Bin(n: longint; var s: string); var z: string; d: char; begin s := ''; if n < 0 then z := '-' else z := ''; n := abs(n); while n > 0 do begin if (n mod 2) = 0 then d := '0' else d := '1'; s := d + s; n := n div 2 end; s := z + s; if s = '' then s := '0' end;
var n: longint; s: string;
begin Write('Введите целое число: '); Readln(n); Dec2Bin(n, s); Writeln(s) end.
Логическая операция ⊕ - это "исключающее ИЛИ" (xor в языках Паскаль, Бейсик и т.д.), а → операция присваивания. Тогда a⊕b→a; a⊕b→b; a⊕b→a - это был обмен значениями a ↔ b Теперь по этой же схеме обменяем местами b и с: b⊕c→b; b⊕c→с; b⊕c→b. Результат: b→a; c→b; a→c
Программа для иллюстрации: // PascalABC.NET 3.1, сборка 1218 от 12.04.2016 begin var a:=50; var b:=-20; var c:=0; Println('Исходные значения: a=',a,'b=',b,'c=',c); a:=a xor b; b:=a xor b; a:=a xor b; b:=b xor c; c:=b xor c; b:=b xor c; Println('Результат обмена: a=',a,'b=',b,'c=',c) end.
USES CRT,Graph;VAR Device,Mode:Integer; i,x,y,s:Integer;BEGINCLRSCR; Device:=0; InitGraph(Device,Mode,''); s:=100; x:=320; y:=240; for i:=1 to 9 do begin SetLineStyle(0,0,ThickWidth); Circle(x,y,s); Delay(200); SetColor(Black); Circle(x,y,s); s:=s-10; SetColor(White); end; for i:=1 to 9 do begin SetLineStyle(0,0,ThickWidth); Circle(x,y,s); Delay(200); SetColor(Black); Circle(x,y,s); s:=s+10; SetColor(White); end; Circle(x,y,s);Readln;END.
var
z: string;
d: char;
begin
s := '';
if n < 0 then z := '-' else z := '';
n := abs(n);
while n > 0 do
begin
if (n mod 2) = 0 then d := '0' else d := '1';
s := d + s;
n := n div 2
end;
s := z + s;
if s = '' then s := '0'
end;
var
n: longint;
s: string;
begin
Write('Введите целое число: '); Readln(n);
Dec2Bin(n, s);
Writeln(s)
end.
Тестовое решение:
Введите целое число: -14
-1110