Предмет: Информатика,
автор: Максим58765
Нужно написать 2 программы в Pascal. 1 программа : пользователь вводит число в десятичной системе, а программа должна перевести это число в двуичный код. Желательно сделать 1 программу простой, с использованием if, div, mod, ну и циклы если надо.. 2 программа : Пользователь вводит число в шестнадцатиричной системе, программа переводит в десятичную. Желательно сделать 2 программу тоже попроще. Помогите пожалуйста.
LRSM:
Но в дополнительном коде?
Если не понимаете уточняющие вопросы, тогда на примере:
Ввод: -5.
Какой должен быть вывод?
1) прямой код: 1000 0101
2) обратный код: 1111 1010
3) дополнительный код: 1111 1011
4) двоичная с.с.: -101
Ответы
Автор ответа:
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.
Приложения:




Похожие вопросы
Предмет: Русский язык,
автор: Алинка1703
Предмет: Русский язык,
автор: Vikavikceremi
Предмет: Русский язык,
автор: katy972011
Предмет: Математика,
автор: антон623