Предмет: Информатика, автор: sem1409

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

Ответы

Автор ответа: Аноним
1
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





sem1409: а вы не могли бы пояснить за что отвечает эта строчка (s16:=UpperCase(s16))
Аноним: Это перекодировка к верхнему регистру, если a..f введут маленькими. Программа ведь на кодах символов работает, а у маленьких другие коды.
Аноним: Для проверки в тестовом решении специально введена е вместо Е
Похожие вопросы
Предмет: Английский язык, автор: Voytenko2003