Перевод восьмеричного числа А в шестнадцатеричное - 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.
Объяснение кода листинга программы
- В первой строке объявлены три строковых константы: s8, s16_2 и s16. s8 - это массив из 8 строк, представляющих собой восьмеричное число в шестнадцатеричной системе счисления. s16_2 - это строка из 16 элементов, представляющих собой пары шестнадцатеричных цифр, разделенных запятой. s16 - это массив из 16 символов, представляющих собой шестнадцатеричные цифры.
- Далее идут три строковые переменные: a, b и d. a - это строка, которая считывается с помощью функции readln и представляет собой восьмеричное число. b - это строка, которая будет содержать результат перевода числа из восьмеричной системы счисления в шестнадцатеричную. d - это вспомогательная строка, используемая для набора полученного числа в шестнадцатеричной системе счисления.
- В первой части кода происходит перевод числа из восьмеричной системы счисления в шестнадцатеричную с помощью цикла while и операции ord, которая возвращает числовое значение символа.
- Во второй части кода происходит формирование строки b из строки d с помощью цикла while и операции pos, которая возвращает позицию первого вхождения подстроки в строку.
- В третьей части кода происходит проверка полученного числа на корректность (проверка на одинаковые символы в начале строки) и при необходимости удаляются лишние нули.
- В четвертой части кода происходит вывод полученного числа в шестнадцатеричной системе счисления с помощью функции writeln.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д