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