Перевод восьмеричного числа А в шестнадцатеричное - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Составить программу, которая переводит восьмеричное число А в шестнадцатеричное число. Вывести промежуточные и окончательные результаты перевода на экран. Число А вводится с клавиатуры в восьмеричном формате.

Решение задачи: «Перевод восьмеричного числа А в шестнадцатеричное»

textual
Листинг программы
const s8:array[0..7] of string[3]=('000','001','010','011','100','101','110','111');
      s16_2=('0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111');
      s16:array[0..15] of char=('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
var a,b,d:string;
begin
    readln(a);d:='';b:='';
    while length(a)>0 do begin d:=s8[ord(a[length(a)])-48]+d;delete(a,length(a),1) end;
    while length(d) mod 4 <> 0 do d:='0'+d;
    if (d[1]=d[2])and(d[2]=d[3])and(d[3]=d[4])and(d[1]='0') then delete(d,1,4);
    if d='' then b:='0'
            else while length(d)>0 do begin b:=b+s16[pos(copy(d,1,4),s16_2) div 5];delete(d,1,4)end;
    writeln(b)
end.

Объяснение кода листинга программы

  1. В первой строке объявлены три строковых константы: s8, s16_2 и s16. s8 - это массив из 8 строк, представляющих собой восьмеричное число в шестнадцатеричной системе счисления. s16_2 - это строка из 16 элементов, представляющих собой пары шестнадцатеричных цифр, разделенных запятой. s16 - это массив из 16 символов, представляющих собой шестнадцатеричные цифры.
  2. Далее идут три строковые переменные: a, b и d. a - это строка, которая считывается с помощью функции readln и представляет собой восьмеричное число. b - это строка, которая будет содержать результат перевода числа из восьмеричной системы счисления в шестнадцатеричную. d - это вспомогательная строка, используемая для набора полученного числа в шестнадцатеричной системе счисления.
  3. В первой части кода происходит перевод числа из восьмеричной системы счисления в шестнадцатеричную с помощью цикла while и операции ord, которая возвращает числовое значение символа.
  4. Во второй части кода происходит формирование строки b из строки d с помощью цикла while и операции pos, которая возвращает позицию первого вхождения подстроки в строку.
  5. В третьей части кода происходит проверка полученного числа на корректность (проверка на одинаковые символы в начале строки) и при необходимости удаляются лишние нули.
  6. В четвертой части кода происходит вывод полученного числа в шестнадцатеричной системе счисления с помощью функции writeln.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы