Перевод числа из восьмеричной системы счисления в шестнадцатеричную - Free Pascal

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

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

Помогите переделать программу. Имеется функция перевода из восьмеричной системы счисления в десятичную, необходимо сделать перевод из восьмеричной в шестнадцатеричную.
function OctToDec(s:string) : string;   //функция перевода из 8-й в 10-ю
var
        i:integer;
        r,f:longint;
begin
        r:=0;f:=1;
        for i:=length(s) downto 1 do
        begin
                r:=r+f*(ord(s[i])-48);
                f:=f*8;
        end;
        str(r,OctToDec);
end;

Решение задачи: «Перевод числа из восьмеричной системы счисления в шестнадцатеричную»

textual
Листинг программы
procedure TForm1.Button1Click(Sender: TObject);
var
  sOctal, sHex : string;
  n : Integer;
begin
  sOctal := Edit1.Text;
  n := Numb2Dec(sOctal, 8);
  sHex := Dec2Numb(n, 1, 16);
  ShowMessageFmt('Oct = %s' + sLineBreak + 'Dec = %d' + sLineBreak + 'Hex = %s', [sOctal, n, sHex]);
end;

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

  1. В начале процедуры объявляются три переменные: строковая sOctal, целочисленная n и еще одна строковая sHex.
  2. Значение переменной sOctal устанавливается в текст, введенный пользователем в поле Edit1.
  3. Целое число n вычисляется с помощью функции Numb2Dec, которая преобразует строку sOctal из восьмеричной системы счисления в десятичную.
  4. Значение переменной sHex вычисляется с помощью функции Dec2Numb, которая преобразует десятичное число n в строку, представляющую шестнадцатеричную систему счисления.
  5. Выводится сообщение с тремя частями: Oct = + sOctal + , `Dec = ` + IntToStr(n) + и Hex = + sHex + `` (соответственно, восьмеричное число, десятичное число и шестнадцатеричное число).

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

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