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

Ответы

Ответ дал: Аноним
0
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)


Ответ дал: leonovru
0
Большое спасибо, а что это за функция Pos?
Ответ дал: Аноним
0
Это стандартная функция языка Паскаль. Возвращает порядковый номер позиции символа "с" в строке 'd' или 0, если символ не найден.
Ответ дал: leonovru
0
Что мне добавить конкретно в мою программу? Просто только недавно начал изучать программирование и твой вариант мне не очень понятен.
Ответ дал: Аноним
0
Я написал ответ на Ваше задание: "Нужно написать программу, которая переводит шестнадцатеричное число в десятичное". Разбираться в том, что Вы написали и почему написали именно так - это не дело. Учитесь писать нормально, чтобы по тексту программы был сразу виден алгоритм.
Ответ дал: Аноним
0
А уж "забивать" в программе массив на 99 999 элементов - это вообще бред.
Похожие вопросы