Составить программу перевода этого числа в шестнадцатеричную систему счисления - Pascal ABC
Формулировка задачи:
Дано дробное число в двоичной системе счисления, т.е. последовательность цифр 0 и 1, разделенных точкой. Составить программу перевода этого числа в шестнадцатеричную систему счисления.
Решение задачи: «Составить программу перевода этого числа в шестнадцатеричную систему счисления»
textual
Листинг программы
uses crt; //тетрады для перевода 2 в 16 const tetr:array[0..15] of string[4]=('0000','0001','0010','0011', '0100','0101','0110','0111', '1000','1001','1010','1011', '1100','1101','1110','1111'); var s2,s21,s22,s16,s161,s162:string; i:integer; c:char; begin clrscr; writeln('Введите дробное число в СС 2(разделитель точка), окончание ввода Enter:'); s2:=''; repeat c:=readkey; if c in ['0','1'] then //в строку только 0 и 1 begin write(c); s2:=s2+c end; if (c='.')and(pos('.',s2)=0)then begin write(c); s2:=s2+c end; if c=#13 then writeln //Enter-на новую строку и выход until c=#13; if pos('.',s2)=0 then s2:='0.'+s2//если не ввели точку else if pos('.',s2)=1 then s2:='0'+s2;//если ввели первой clrscr; writeln('Число в СС 2: ',s2); //переводим целую часть s21:=copy(s2,1,pos('.',s2)-1); while length(s21) mod 4<>0 do s21:='0'+s21;//добавим в начало 0 до кратности 4 s161:=''; while s21<>'' do begin for i:=0 to 15 do if copy(s21,1,4)=tetr[i]then //читаем тетраду begin if i in [0..9] then s161:=s161+chr(i+48)//пишем или цифру else s161:=s161+chr(i+55);//или букву A..F end; delete(s21,1,4);//удалим тетраду end; while (s161[1]='0')and(length(s161)>1) do delete(s161,1,1);//удалим ведущие ноли //переводим дробную часть delete(s2,1,pos('.',s2)); //удалим целую часть с точкой s22:=s2; while length(s22) mod 4<>0 do s22:=s22+'0';//добавим в конец 0 до кратности 4 s162:=''; while s22<>'' do begin for i:=0 to 15 do if copy(s22,1,4)=tetr[i]then begin if i in [0..9] then s162:=s162+chr(i+48) else s162:=s162+chr(i+55); end; delete(s22,1,4); end; s16:=s161+'.'+s162; writeln('Число в СС 16: ',s16); end.
Объяснение кода листинга программы
- Создается переменная
s2
типаstring
, которая будет использоваться для хранения введенного числа в шестнадцатеричной системе счисления. - Создается переменная
s21
типаstring
, которая будет использоваться для хранения целой части числа, переведенной в шестнадцатеричную систему счисления. - Создается переменная
s22
типаstring
, которая будет использоваться для хранения дробной части числа, переведенной в шестнадцатеричную систему счисления. - Создается переменная
s16
типаstring
, которая будет использоваться для хранения итогового числа в шестнадцатеричной системе счисления. - В цикле
while
считывается символ от пользователя, пока не будет введен символEnter
. - Если введенный символ - это точка, то к переменной
s2
добавляется точка. - Если длина строки
s2
равна нулю, то к переменнойs2
добавляется ноль. - Если длина строки
s2
равна единице, то к переменнойs2
добавляется ноль в начале. - Переменные
s21
иs22
инициализируются пустой строкой. - Цикл
while
продолжается, пока длина строкиs21
не станет равной нулю. - Внутри цикла
while
считывается тетрада из массиваtetr
. - Если строка
s21
содержит соответствующий символ, то он заменяется на соответствующую цифру или букву. - После окончания цикла
while
удаляется последний символ из строкиs21
. - Цикл
while
продолжается, пока длина строкиs22
не станет равной нулю. - Внутри цикла
while
считывается тетрада из массиваtetr
. - Если строка
s22
содержит соответствующий символ, то он заменяется на соответствующую цифру или букву. - После окончания цикла
while
удаляется последний символ из строкиs22
. - Строки
s21
иs22
объединяются в одну строку с разделителем точка. - Итоговая строка
s16
инициализируется пустой строкой. - Цикл
while
продолжается, пока длина строкиs16
не станет равной нулю. - Внутри цикла
while
к строкеs16
добавляется целая часть числа, переведенная в шестнадцатеричную систему счисления. - После окончания цикла
while
к строкеs16
добавляется дробная часть числа, переведенная в шестнадцатеричную систему счисления. - Программа завершается и выводит итоговую строку
s16
на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д