Предмет: Информатика, автор: Максим58765

Помогите написать программу в Pascal. Нужно чтобы пользователь ввёл число из десятичной системы, а программа переводила его в двоичный код.


Максим58765: Желательно без цикла repeat
serd2011: "Помогите..." подразумевает, что ты уже что-то сделал, но застрял на чем-то? Или ты просто хочешь готовую программу?

Ответы

Автор ответа: kornickevg
0

Ответ:

program des_v_dvoich;

uses crt;

var

x,i: integer;

s:String;

begin

write('Введите десятичное число>>');

read(x);

write('Двоичное число>>');

if x<0 then begin

write('-');

x:=abs(x);

end;

if x=0 then

write ('0')

else

begin

while x<>0 do begin

if x mod 2 =1 then

s:=s+'1'

else

s:=s+'0';

x:=x div 2

end;

for i:=length(s) downto 1 do

write(s[i])

end;

end.

Объяснение:

Скрины выполнения прикреплены

Приложения:

serd2011: А вы уверены, что отрицательные надо представлять именно в виде -1010... а не в доп. коде?
kornickevg: Можно и в обратном)
kornickevg: В условии мало уточнений(
Автор ответа: LRSM
0

PascalABC.NET

Ответ:

Перевод целых чисел в двоичный код:

  • function f(x:integer):string := x>0 ? f(x div 2) + x mod 2 : '';
  • function ToBinaryCode(Self:integer; n:byte:=8):string; extensionmethod;
  • begin
  •  Result :=
  •  if Self = 0 then '0'
  •  else f((Self or Trunc(2**n)) and Trunc(2**n-1)).PadLeft(n, Self>0 ? '0':'1')
  • end;
  • begin
  •  ReadInteger.ToBinaryCode.Print;
  • end.

Перевод целых чисел в двоичную систему счисления:

  • function f(x:integer):string := x>0 ? f(x div 2) + x mod 2 : '';
  • function Bin(x:integer):string := x=0 ? '0' : x>0 ? f(x) : '-' + f(Abs(x));
  • begin
  •  Print('x₂:', Bin(ReadInteger('x₁₀:')))
  • end.

Пример работы:

Приложения:

LRSM: По умолчанию данная программа вычисляет двоичное 8-разрядное число, соответственно, на вход могут подаваться числа в диапазоне от −128 до +127. Однако, при вызове ToBinaryCode, в скобках можно указать другое количество разрядов, тем самым повысив диапазон входных значений.
LRSM: Так, например, при вызове " ReadInteger.ToBinaryCode(16).Print " можно вводить значения от -32768 до +32767. В таком случае, результатом работы будет двухбайтовое двоичное число (16 разрядов).
Максим58765: Конечно спасибо, но не могли бы вы сделать попроще, в прямом смысле, без function, и др, а например с if, div, mod и циклом если надо
LRSM: В таком случае Вам следует создать новый вопрос, редактирование ответов доступно лишь в течении 2 часов.
Похожие вопросы
Предмет: Қазақ тiлi, автор: kuanovarman
Предмет: Математика, автор: dashashumeyko