Составить программу перевода этого числа в шестнадцатеричную систему счисления - Pascal ABC

  1. Дано дробное число в двоичной системе счисления, т.е. последовательность цифр 0 и 1, разделенных точкой. Составить программу перевода этого числа в шестнадцатеричную систему счисления.


textual

Код к задаче: «Составить программу перевода этого числа в шестнадцатеричную систему счисления - Pascal ABC»

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.

СДЕЛАЙТЕ РЕПОСТ

15   голосов, оценка 3.867 из 5



Похожие ответы
  1. Нужно, чтобы не было лейбел, но программа не меняла своей сути . ОЧЕНЬ СРОЧНО!!!

  1. Напишите программу, которая находит все различные цифры в символьной строке.Входные данные На вход программе подаётся символьная строка.Выходные данные Программа должна вывести в одной строке все различные цифры, которые встречаются в исходной строке, в порядке возрастания. Если в строке нет цифр, нужно вывести слово 'NO'.Примеры:входные данные ab1n32kz2выходные данные 123входные данные asdasdвыходные данные NO

  1. Составить программу вычисления функции y=1-(sin(x))/(1-ln(x+1)) при изменении аргумента x в интервале 0,1<=x<=3,0 с шагом h=0,1

  1. Напишите программу, которая выводит на экран круговую диаграмму , отражающую товарооборот (в процентах) книжного магазина. Исходные данные 30% 35% 30% 5%.

  1. Добрый день. Знаю, что такое уже было на вашем форуме, но оно было не полностью, а как доделать я не сильно знаю. Задача: Написать программу перевода целого числа a из цифрового формата в прописной. a < 1012 Пример: a = 123 ⇒ cто двадцать три. Вот код, который я обнаружил на этом сайте:

  1. Здравствуйте, помогите разобраться! Дано задача. Кубики. Кубик с ребром N см покрасили и разрезали на кубики с ребром 1 см. При этом появились такие, у которых окрашено разное количество граней. Например, если N = 3, то после разрезания будет 8 кубиков, у которых окрашено три грани, 12 с двумя гранями, 6 с одной, а один кубик будет совсем неокрашенный. Составьте программу, которая бы определяла, сколько кубиков с каждой возможным количеством окрашенных граней. Как можно создать Ввод и Вывод файл не как не могу! Задачу из интернета скачал. Delphi1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 program cubes; uses crt; var x,x1,x2,x3,x0,y,z,k,n:integer; s:string; f,g:text; begin assign(f,'cubes.dat'); reset(f); readln(f,y); close(f) ; x3:=8; x1:=sqr(y-2)*6; x0:=(sqr(y-2))*(y-2); x2:=(y-2)*4*2+(y-2)*4; assign(g,'cubes.sol'); rewrite(g); writeln(g,'0/',x0,' 1/',x1,' 2/',x2,' 3/',x3); close(g); end.

  1. Написать программу формирования ОПЗ и расчета полученного выражения. Разработать удобный интерфейс ввода исходных данных и вывода результатов. Работу программы проверить на конкретном примере Сам пример со значениями которые должны получиться: (a– b)/(c+d)*e , где а=0.3 b=6.7 c=8.4 d=9.6 e=1.2 Результат должен получиться -0.429. Помогите пожалуйста используя динамический массив заранее спасибо