Вопрос по информатике:
Нужно написать программу, которая переводит шестнадцатеричное число в десятичное. У меня возникли проблемы, не знаю что делать с буквами 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.
Трудности с пониманием предмета? Готовишься к экзаменам, ОГЭ или ЕГЭ?
Воспользуйся формой подбора репетитора и занимайся онлайн. Пробный урок - бесплатно!
- 23.09.2017 00:14
- Информатика
- remove_red_eye 4182
- thumb_up 38
Ответы и объяснения 1
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)
- 24.09.2017 02:10
- thumb_up 24
Знаете ответ? Поделитесь им!
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи - смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.