Предмет: Информатика,
автор: Максим58765
Помогите написать программу в Pascal. Нужно чтобы пользователь ввёл число из десятичной системы, а программа переводила его в двоичный код.
Максим58765:
Желательно без цикла repeat
"Помогите..." подразумевает, что ты уже что-то сделал, но застрял на чем-то? Или ты просто хочешь готовую программу?
Ответы
Автор ответа:
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.
Объяснение:
Скрины выполнения прикреплены
Приложения:
А вы уверены, что отрицательные надо представлять именно в виде -1010... а не в доп. коде?
Можно и в обратном)
В условии мало уточнений(
Автор ответа:
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.
Пример работы:
Приложения:
По умолчанию данная программа вычисляет двоичное 8-разрядное число, соответственно, на вход могут подаваться числа в диапазоне от −128 до +127. Однако, при вызове ToBinaryCode, в скобках можно указать другое количество разрядов, тем самым повысив диапазон входных значений.
Так, например, при вызове " ReadInteger.ToBinaryCode(16).Print " можно вводить значения от -32768 до +32767. В таком случае, результатом работы будет двухбайтовое двоичное число (16 разрядов).
Конечно спасибо, но не могли бы вы сделать попроще, в прямом смысле, без function, и др, а например с if, div, mod и циклом если надо
В таком случае Вам следует создать новый вопрос, редактирование ответов доступно лишь в течении 2 часов.
Похожие вопросы
Предмет: Русский язык,
автор: gattarovaa
Предмет: Русский язык,
автор: MisterHorosho
Предмет: Английский язык,
автор: porfinenko2015
Предмет: Математика,
автор: dashashumeyko