Turbo Pascal для начинающих




Задача 149


var
st: string[2]; { шестнадцатеричное число }
d: integer; { десятичное число, соответствующее
введенному шестнадцатеричному }
v: integer; { вес разряда шестнадцатеричного числа } 1: integer; begin
writeln('Введите двухразрядное шестнадцатеричное число 'и нажмите <Enter>.');
write('->'); readln (st);
{ преобразуем введенную строку к верхнему регистру } for i:=l to Length(st)
do st[i]:=UpCase(st[i]);
i:=Length(st); { обрабатываем с младшего разряда } v:=l; {и его вес равен единице }
while (i>0) and
(((st[i] >= '0') and (st[i] <= '9')) or
((st[i] >= 'A') and (st[i] <= 'F'))) do begin
{ здесь символ - цифра или
латинская буква от А до F) if (st[i] >= '0') and (st[i] <= '9') then d:=d + v * ( Ord(st[i])-48 )
{ Ord('O') = 48, Ord('l') = 49, и т.д. } else d:=d + v * (Ord(st[i]) - 55);
{ Ord('A') = 65, Ord('B') = 66, и т.д. }
i:=i-l; { к предыдущему разряду } v:=v*16;
end;
if i=0 { обработаны все разряды }
then writeln('Шестнадцатеричному числу ',st,
' соответствуе десятичное ',d) else writeln('Введенная строка не является ',
'шеснадцатеричнои цифрой.');
readln; end.









Начало    Назад    Вперед