Нужно написать программу, которая переводит шестнадцатеричное число в десятичное. У меня возникли проблемы, не знаю что делать с буквами A B C D E F, вот что я написал: var a, x, y, n, q, p, z, i, w: integer; b: array [1..99999...

Нужно написать программу, которая переводит шестнадцатеричное число в десятичное. У меня возникли проблемы, не знаю что делать с буквами A B C D E F, вот что я написал: var a, x, y, n, q, p, z, i, w: integer; b: array [1..99999] of integer; begin writeln; write('Введите число: '); read(a); write('Введите систему, в которой находится число: '); read(w); q:=a; n:=1; if w=16 then begin write(q,' в шестнадцатеричной системе = '); repeat x:=a mod 10; y:=a div 10; b[n]:=x; a:=y; n:=n+1; until y=0; end; z:=1; for i:=1 to n-1 do begin b[i]:=b[i]*z; z:=z*w; end; p:=0; for i:=1 to n-1 do p:=p+b[i]; write(p,' в десятичной системе '); end.
Гость
Ответ(ы) на вопрос:
Гость
const   d = '0123456789'; var   i, m, k: longint;   c: char;   n: string; begin   Write('Введите шестнадцатиричное число: '); Readln(n);   m := 0;   while n[1] = '0' do delete(n, 1, 1);   for i := 1 to length(n) do   begin     c := n[i];     case c of       'F', 'f': k := 15;       'E', 'e': k := 14;       'D', 'd': k := 13;       'C', 'c': k := 12;       'B', 'b': k := 11;       'A', 'a': k := 10;     else k := Pos(c, d) - 1     end;     m := 16 * m + k   end;   Writeln(n, '(16)=', m, '(10)') end. Тестовое решение: Введите шестнадцатиричное число: 1A2B3C 1A2B3C(16)=1715004(10)
Не нашли ответ?
Ответить на вопрос
Похожие вопросы