Другие языки программирования и технологии

Помогите с паскалем. Помогите написать программу переводящую из 10-ой в 16-ую систему счисления на паскале

var
    d, n: longint;
    h: string;
begin
    write('n? ');
    readln(n);
    repeat
        d := n mod 16;
        if d < 10 then
            h := chr(ord('0') + d) + h
        else
            h := chr(ord('A') - 10 + d) + h;
        n := n div 16;
    until n = 0;
    writeln(h, 'h');
end.
МП
Максим Почепцов
97 201
Лучший ответ
А на мой взгляд, лучше вот так!

const
  Hex : array [0..15] of Char = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
var
  N : Longint;
  H : String;
begin
  Write('Введите положительное число в десятичной СС: '); ReadLn(N);
  H := '';
  repeat
    H := Hex[N mod 16] + H;
    N := N div 16;
  until N = 0;
  WriteLn('В шестнадцатеричной СС: ', H);
end.

Главное:
— алгоритм в таком виде более прозрачен и нагляден
— так алгоритм работает гораздо быстрее (для такой маленькой программы это не критично, но если подобная функция во время работы программы будет вызвана большое количество раз, то результат будет более чем заметен)
— данная программа в скомпилированном виде будет чуть больше, чем предыдущего отвечающего… Но кто считает нынче байты, когда программы доходят до сотен мегабайт ;-)

Соглашусь, что со строками здесь немного не оптимально…
вот и меня заинтересовало