Перевод чисел в различные системы счисления - Pascal (80625)

Узнай цену своей работы

Формулировка задачи:

Помогите составить программу перевода из некоторой системы счисления в родственную ей систему счисления вещественных чисел, содержащих как целую, так и дробную часть: Из шестнадцатеричной системы счислению в восьмеричную

Решение задачи: «Перевод чисел в различные системы счисления»

textual
Листинг программы
  1. const
  2. //цифры в СС 16
  3. cf:string[16]='0123456789ABCDEF';
  4. //тетрады для перевода 16 в 2
  5. tetr:array[1..16] of string[4]=('0000','0001','0010','0011',
  6.                                 '0100','0101','0110','0111',
  7.                                 '1000','1001','1010','1011',
  8.                                 '1100','1101','1110','1111');
  9. //триады для перевода 2 в 8
  10. trd:array[1..8] of string[3]=('000','001','010','011',
  11.                               '100','101','110','111');
  12. var s16t,s16f,s2t,s2f,s8t,s8f,s:string;
  13.     i:byte;
  14. begin
  15. write('Введите целую часть вещественного числа в СС 16: ');
  16. readln(s16t);
  17. write('Введите дробную часть вещественного числа в СС 16: ');
  18. readln(s16f);
  19. //переведем все в верхний регистр
  20. for i:=1 to length(s16t)do
  21. s16t[i]:=UpCase(s16t[i]);
  22. for i:=1 to length(s16f)do
  23. s16f[i]:=UpCase(s16f[i]);
  24. writeln('Число в СС 16');
  25. writeln(s16t+'.'+s16f);
  26. //переведем в СС 2
  27. s2t:=''; //целая часть
  28. while length(s2t)mod 4<>0 do s2t:='0'+s2t;
  29. for i:=1 to length(s16t) do
  30. s2t:=s2t+tetr[pos(s16t[i],cf)];
  31. while s2t[1]='0' do delete(s2t,1,1);
  32. s2f:='';//дробная часть
  33. while length(s2f)mod 4<>0 do s2f:=s2f+'0';
  34. for i:=1 to length(s16f) do s2f:=s2f+tetr[pos(s16f[i],cf)];
  35. while s2f[length(s2f)]='0' do delete(s2f,length(s2f),1);
  36. writeln('Число в СС 2');
  37. writeln(s2t+'.'+s2f);
  38. //перевод в СС 8
  39. while length(s2t) mod 3 <> 0 do s2t:='0'+s2t;
  40. s8t:='';//целая часть
  41. while s2t<>'' do
  42.  begin
  43.   for i:=1 to 8 do
  44.   if copy(s2t,1,3)=trd[i] then s8t:=s8t+chr(i+47);
  45.   delete(s2t,1,3);//удаляем триаду
  46.  end;
  47. while length(s2f) mod 3 <> 0 do s2f:=s2f+'0';
  48. s8f:=''; //дробная часть
  49. while s2f<>'' do
  50.  begin
  51.   for i:=1 to 8 do
  52.   if copy(s2f,1,3)=trd[i] then s8f:=s8f+chr(i+47);
  53.   delete(s2f,1,3);//удаляем триаду
  54.  end;
  55. writeln('Число в СС 8');
  56. s:=s8t+'.'+s8f;
  57. writeln(s);
  58. end.

Объяснение кода листинга программы

  1. cf - строка, содержащая цифры в системе счисления 16: 0123456789ABCDEF
  2. tetr - массив строк, содержащий тетрады для перевода чисел из системы счисления 16 в 2:
    • 0000, 0001, 0010, ... , 1110, 1111
  3. trd - массив строк, содержащий триады для перевода чисел из системы счисления 2 в 8:
    • 000, 001, 010, ... , 110, 111
  4. s16t - строка, вводится пользователем целая часть вещественного числа в СС 16
  5. s16f - строка, вводится пользователем дробная часть вещественного числа в СС 16
  6. s2t - строка, целая часть вещественного числа в СС 2
  7. s2f - строка, дробная часть вещественного числа в СС 2
  8. s8t - строка, целая часть вещественного числа в СС 8
  9. s8f - строка, дробная часть вещественного числа в СС 8
  10. s - строка, результирующее число в СС 8
  11. i - переменная типа byte для использования в циклах Код выполняет следующие действия:
  12. Запрашивает у пользователя целую и дробную части вещественного числа в системе счисления 16.
  13. Переводит введенные числа в верхний регистр.
  14. Выводит введенное число в системе счисления 16.
  15. Переводит число из системы счисления 16 в систему счисления 2 и выводит результат.
  16. Переводит число из системы счисления 2 в систему счисления 8 и выводит результат.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы