Перевод десятичного числа в шестнадцатеричное

Задача

Пользователь вводит число, представленное в десятичной системе счисления. Программа должна преобразовывать его в число, выраженное в шестнадцатеричной системе счисления. Результат вывести на экран.

Решение

 

Алгоритм перевода десятичного числа в другую систему счисления одинаков. Однако в случае шестнадцатеричной системы он усложнен тем, что цифры с 10 до 15 должны быть заменены буквами.
Поэтому сначала находится остаток от деления на 16. Если он представляет собой двузначное число, то переменной ch присваивается соответствующий символ. Иначе происходит перевод цифры в ее символьное представление. Символ добавляется к строке.

Программа на языке Паскаль: 

 

var
    decimal: word;
 
function hexadecimal(decimal:word):string;
var digit: byte; ch: char;
begin
    while decimal > 0 do begin
        digit := decimal mod 16;
        if digit in [10..15] then
            case digit of
            10: ch := 'A';
            11: ch := 'B';
            12: ch := 'C';
            13: ch := 'D';
            14: ch := 'E';
            15: ch := 'F'
            end
        else
            ch := chr(ord('0') + digit);
        hexadecimal := ch + hexadecimal;
        decimal := decimal div 16
    end;
end;
 
begin
    write('Decimal: ');
    readln(decimal);
 
    writeln(hexadecimal(decimal));
 
readln
end.

 

Тема

Процедуры, функции, рекурсии

Уровень

Комбинированные задачи

Добавить комментарий