Нужно написать программу, которая переводит шестнадцатеричное число в десятичное. у меня возникли проблемы, не знаю что делать с буквами 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.
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)