repeat

      Write('Основание системы= '); Readln(B);

      if B in [2..16] then begin

      Write('Преобразуемое число= '); Readln(N);

      Writeln(ConvertFromNumber(B, N));

      end

until not (B in [2..16]);

end.

Эта простая программа подарит вам счастье наблюдать знакомые десятичные числа в экзотических системах счисления, например, в троичной или пятеричной.

Обратное преобразование

Теперь займемся обратной задачей: пусть дана строка символов, изображающая некое число в известной системе счисления; требуется преобразовать эту строку в число и напечатать в десятичной системе.

Сборка числа из десятичных цифр нами освоена. Она выполнялась умножением накопленной суммы на десять с прибавлением очередной цифры, начиная со старшей. Надо ли объяснять, что сборка в других системах выполняется точно так же? Только умножать будем не на десять, а на основание системы счисления. В следующей ниже программе сборка выполняется функцией ConvertToNumber – «преобразовать в число».

{ P_47_2 – Преобразование из других систем счисления }

function ConvertToNumber(aBase: integer; aNumber: string): integer;

var i,n, Sum : integer;

      c : char;

begin

Sum:=0; { Накопитель результата }

for i:=1 to Length(aNumber) do begin

      c:= Upcase(aNumber[i]);

      if c in ['0'..'9']

      then n:= Ord(c)-Ord('0') {0..9}

      else n:= 10+Ord(c)-Ord('A'); {10..15}

      Sum:= aBase*Sum + n; { Накопление суммы }

end;

ConvertToNumber:= Sum; { готово! }

end;

var B : integer; { Основание системы }

      N : string; { Изображение числа в виде строки }

begin {=== Главная программа ===}

repeat

      Write('Основание системы= '); Readln(B);

      if B in [2..16] then begin

      Write('Преобразуемое число= '); Readln(N);

      Writeln(ConvertToNumber(B, N));

      end

until not (B in [2..16]);

end.

Как обычно, здесь выделены операторы, стоящие внимания. Функция UpCase преобразует строчные латинские буквы в заглавные. Ведь шестнадцатеричные цифры от «A» до «F» могут быть введены пользователем в любом регистре, а последующие операторы преобразования цифры в число предполагают заглавные буквы – вот потому и понадобилась функция UpCase.

Вы читаете Песни о Паскале
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату