Нужно написать 2 программы в Pascal. 1 программа : пользователь вводит число в десятичной...

+923 голосов
4.9m просмотров

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


Информатика (34 баллов) | 4.9m просмотров
+162

Тогда ждите, когда антиспамер удосужится удалить ответ Friday48. Или создайте нормальный вопрос, в котором укажите все необходимые требования к решению. Вот как этот, к примеру: znanija.com/task/37812419

+53

Прямой код

+117

Все правильно он спрашивает

+157

LRSM, слишком много вопросов.......

+106

Вы дали задание: "перевести это число в двуичный код".
Если не понимаете уточняющие вопросы, тогда на примере:
Ввод: -5.
Какой должен быть вывод?
1) прямой код: 1000 0101
2) обратный код: 1111 1010
3) дополнительный код: 1111 1011
4) двоичная с.с.: -101

Дан 1 ответ
+45 голосов

Задание 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.
(3.7k баллов)