• Предмет: Информатика
  • Автор: Максим58765
  • Вопрос задан 1 год назад

Нужно написать 2 программы в Pascal. 1 программа : пользователь вводит число в десятичной системе, а программа должна перевести это число в двуичный код. Желательно сделать 1 программу простой, с использованием if, div, mod, ну и циклы если надо.. 2 программа : Пользователь вводит число в шестнадцатиричной системе, программа переводит в десятичную. Желательно сделать 2 программу тоже попроще. Помогите пожалуйста.


LRSM: Но в дополнительном коде?
Максим58765: А без размера двоичного кода никак?
LRSM: "двоичный код" имеет 3 представления: прямой, обратный и дополнительный. В компьютерах наиболее распространённый способ представления — дополнительный код.
LRSM: Да, можно не указывать количество разрядов, вычислить минимально необходимое, хотя в калькуляторах принято указывать. Но складывается впечатление, что Вы не знаете, что такое двоичный код, и программа должна переводить именно в двоичную систему.
Максим58765: Я совсем недавно начал программировать и не со всем твои вопросы понимаю, так что сделай в двоичную систему раз хочешь
LRSM: Вы дали задание: "перевести это число в двуичный код".
Если не понимаете уточняющие вопросы, тогда на примере:
Ввод: -5.
Какой должен быть вывод?
1) прямой код: 1000 0101
2) обратный код: 1111 1010
3) дополнительный код: 1111 1011
4) двоичная с.с.: -101
Friday48: LRSM, слишком много вопросов.......
serd2011: Все правильно он спрашивает
Максим58765: Прямой код
LRSM: Тогда ждите, когда антиспамер удосужится удалить ответ Friday48. Или создайте нормальный вопрос, в котором укажите все необходимые требования к решению. Вот как этот, к примеру: znanija.com/task/37812419

Ответы

Ответ дал: LRSM
0

Задание 1:

Вы писали, что программа должна переводить введённое число в "прямой код", хотя, в тоже время писали, что "она не должна быть кратна" 8 (или 4). Вот "простая" программа для перевода в двоичную систему счисления натуральных чисел. На этой основе можете потом её "усложнять" (например, ввод целых, или перевод в двоичный прямой код).

PascalABC.NET:

  • ##
  • var (x, s) := (ReadInteger, '');
  • while x>0 do (s, x) := (x mod 2 + s, x div 2);
  • Write(s)

Pascal:

  • var x: integer; s: string;
  • begin
  •  Read(x);
  •  while x>0 do begin
  •    s := x mod 2 + s;
  •    x := x div 2;
  •  end;
  •  Write(s);
  • end.

Задание 2:

PascalABC.NET:

  • ##
  • var (s, x) := (ReadString, 0);
  • var al := '0123456789ABCDEF';
  • var i := 1;
  • foreach var c in s.Reverse do
  •  (x, i) := (x + i*(Pos(c, al)-1), i*16);
  • Write(x)

Pascal:

  • var
  •  s, al: string;
  •  x, i, n: int64;
  • begin
  •  Read(s);
  •  al := '0123456789ABCDEF';
  •  n := 1;
  •  for i := Length(s) downto 1 do
  •  begin
  •    x := x + n*(Pos(s[i], al)-1);
  •    n := n * 16;
  •  end;
  •  Write(x)
  • end.
Приложения:
Вас заинтересует