Вы не могли бы написать программу перевода из 16-й в 2-ую систему счисления. (с функцией.)

kat19810 kat19810    2   25.06.2019 11:20    0

Ответы
baevivanx2017x baevivanx2017x  20.07.2020 16:51
Function f16t2(s16:string):string;
const
  m:array['0'..'F'] of string=
    ('0000','0001','0010','0011','0100','0101','0110','0111',
     '1000','1001','','','','','','','','1010','1011','1100',
     '1101','1110','1111');
  m1:array['0'..'F'] of string=
    ('0','1','10','11','100','101','110','111','1000','1001','',
     '','','','','','','1010','1011','1100','1101','1110','1111');
var
  s:string;
  i:integer;
begin
  s16:=UpperCase(s16);
  s:=m1[s16[1]]+;
  for i:=2 to Length(s16) do s:=s+m[s16[i]]+;
  f16t2:=Copy(s,1,Length(s)-1)
end;

var
  s:string;
begin
  Write('Введите шестнадцатиричное число: '); Readln(s);
  Writeln('В двоичной системе: ',f16t2(s))
end.

Тестовое решение:
Введите шестнадцатиричное число: 5AC8e2
В двоичной системе: 101'1010'1100'1000'1110'0010

Если разбивка вывода по тетрадам не нужна, можно чуть упростить:
function f16t2(s16:string):string;
const
  m:array['0'..'F'] of string=
    ('0000','0001','0010','0011','0100','0101','0110','0111',
     '1000','1001','','','','','','','','1010','1011','1100',
     '1101','1110','1111');
  m1:array['0'..'F'] of string=
    ('0','1','10','11','100','101','110','111','1000','1001','',
     '','','','','','','1010','1011','1100','1101','1110','1111');
var
  s:string;
  i:integer;
begin
  s16:=UpperCase(s16);
  s:=m1[s16[1]];
  for i:=2 to Length(s16) do s:=s+m[s16[i]];
  f16t2:=s
end;

var
  s:string;
begin
  Write('Введите шестнадцатиричное число: '); Readln(s);
  Writeln('В двоичной системе: ',f16t2(s))
end.

Тестовое решение:
Введите шестнадцатиричное число: 5AC8e2
В двоичной системе: 10110101100100011100010
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика