Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 18.02.2017
Сообщений: 2

Программа для перевода из 3 в 16 систему счисления

18.02.2017, 18:02. Показов 2121. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите, пожалуйста, простую программу в паскале abc, которая переводит из 3 в 16 систему счисления.
Буду безмерно благодарен
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.02.2017, 18:02
Ответы с готовыми решениями:

Программа для перевода из 10, 3 и 16, ричных систем в 4-ричную систему счисления
Всем привет, вот сижу в поиске такой программы, если бы сроки не поджимали я был нашел, но увы спешка не дает мне все внимательно...

Нужна программа для перевода из шестнадцатеричной системы счисления в восьмеричную систему счисления или десятичную
Исходный файл содержит числа в шестнадцатеричной системе счисления, отделенные друг от друга запятыми. Составить программу, которая для...

Программа для перевода из десятичной сс в любую другую систему счисления
Создать программу перевода заданного числа в десятичной системе счисления в любую другую. Исходные данные хранятся в текстовом файле...

6
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
18.02.2017, 20:56
3 ->10
10 -> 16
Перевод в различные системы счисления
0
0 / 0 / 0
Регистрация: 18.02.2017
Сообщений: 2
18.02.2017, 21:53  [ТС]
А напрямую из 3 в 16 нельзя?
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
19.02.2017, 07:44
artem_alexeev, нет, нельзя.
0
Модератор
10431 / 5719 / 3404
Регистрация: 17.08.2012
Сообщений: 17,395
19.02.2017, 15:27
ZX Spectrum-128, можно, отчего же нельзя. Чтобы "всё было честно", будем использовать таблицу сложения. Преобразовывать можно так: пусть сначала шестнадцатеричное число равно 0. Затем, начиная со старшего разряда троичного числа, будем умножать текущее значение шестнадцатеричного числа на 3 и прибавлять к нему очередной разряд троичного числа. Чтобы не плодить лишних сущностей, умножение на 3 можно делать с помощью сложения.

Замечу, что данная программа для сдачи задания как-то не очень подходит, скорее, она являет собой пример неоправданно сложного, буквального и формального выполнения задания. Хотя... Программе всё же есть чем похвастаться. Она может работать с целыми троичными числами с количеством разрядов, включая знаковый, равным максимальной длине типа string, то есть, никак не хуже [-3254+1 ... 3255-1]. С использованием числовых типов данных и без применения длинной арифметики такое преобразование без потери младших значащих разрядов невозможно.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
//функция сложение шестнадцатеричных чисел
function add(x: string; y: string): string;
//таблица сложения
const tab: array ['0'..'F', '0'..'F'] of string[2] = (
('00','01','02','03','04','05','06','07','08','09','','','','','','','','0A','0B','0C','0D','0E','0F'),
('01','02','03','04','05','06','07','08','09','0A','','','','','','','','0B','0C','0D','0E','0F','10'),
('02','03','04','05','06','07','08','09','0A','0B','','','','','','','','0C','0D','0E','0F','10','11'),
('03','04','05','06','07','08','09','0A','0B','0C','','','','','','','','0D','0E','0F','10','11','12'),
('04','05','06','07','08','09','0A','0B','0C','0D','','','','','','','','0E','0F','10','11','12','13'),
('05','06','07','08','09','0A','0B','0C','0D','0E','','','','','','','','0F','10','11','12','13','14'),
('06','07','08','09','0A','0B','0C','0D','0E','0F','','','','','','','','10','11','12','13','14','15'),
('07','08','09','0A','0B','0C','0D','0E','0F','10','','','','','','','','11','12','13','14','15','16'),
('08','09','0A','0B','0C','0D','0E','0F','10','11','','','','','','','','12','13','14','15','16','17'),
('09','0A','0B','0C','0D','0E','0F','10','11','12','','','','','','','','13','14','15','16','17','18'),
(  '',  '',  '',  '',  '',  '',  '',  '',  '',  '','','','','','','','',  '',  '',  '',  '',  '',  ''),
(  '',  '',  '',  '',  '',  '',  '',  '',  '',  '','','','','','','','',  '',  '',  '',  '',  '',  ''),
(  '',  '',  '',  '',  '',  '',  '',  '',  '',  '','','','','','','','',  '',  '',  '',  '',  '',  ''),
(  '',  '',  '',  '',  '',  '',  '',  '',  '',  '','','','','','','','',  '',  '',  '',  '',  '',  ''),
(  '',  '',  '',  '',  '',  '',  '',  '',  '',  '','','','','','','','',  '',  '',  '',  '',  '',  ''),
(  '',  '',  '',  '',  '',  '',  '',  '',  '',  '','','','','','','','',  '',  '',  '',  '',  '',  ''),
(  '',  '',  '',  '',  '',  '',  '',  '',  '',  '','','','','','','','',  '',  '',  '',  '',  '',  ''),
('0A','0B','0C','0D','0E','0F','10','11','12','13','','','','','','','','14','15','16','17','18','19'),
('0B','0C','0D','0E','0F','10','11','12','13','14','','','','','','','','15','16','17','18','19','1A'),
('0C','0D','0E','0F','10','11','12','13','14','15','','','','','','','','16','17','18','19','1A','1B'),
('0D','0E','0F','10','11','12','13','14','15','16','','','','','','','','17','18','19','1A','1B','1C'),
('0E','0F','10','11','12','13','14','15','16','17','','','','','','','','18','19','1A','1B','1C','1D'),
('0F','10','11','12','13','14','15','16','17','18','','','','','','','','19','1A','1B','1C','1D','1E'));
var i, j: integer;
    d: string;
begin
  if length(x) < length(y) //если длина "x" меньше длины "y"
    then begin //то меняем их местами
      d := x;
      x := y;
      y := d
    end;
  x := '0' + x; //добавляем незначащий 0 для упрощения алгоритма
  for i := 1 to length(x) - length(y) do y := '0' + y; //делаем длину "y" равной длине "x"
  for i := length(x) downto 2 do //складываем поразрядно "столбиком" x := x + y
    begin
      d := tab[x[i], y[i]]; //сумма текущих разрядов
      x[i] := d[2]; //записываем младший разряд суммы в результат
      j := i; //номер текущего разряда
      while d[1] = '1' do //пока есть перенос, распространяем его
        begin
          dec(j); //номер разряда, к которому прибавляется перенос
          d := tab[x[j], d[1]]; //сумма разряда и переноса
          x[j] := d[2] //записываем младший разряд суммы в результат
        end
    end;
  while (length(x) > 1) and (x[1] = '0') do delete(x, 1, 1); //удаляем незначащие нули
  add := x //результат сложения
end;
 
var tri, hex, s: string; //троичное, шестнадцатеричное, знак
    i: integer; //счётчик цифр
    error: boolean; //флаг ошибки
begin
  repeat //ввод с проверкой
    write('Введите целое число в троичной системе счисления: ');
    readln(tri);
    if tri[1] <> '-' //если знак не отрицательный
      then s := '' //то знак положительный (хм... логично)
      else begin //иначе
        s := tri[1]; //запоминаем знак
        delete(tri, 1, 1) //вычисляем модуль числа
      end;
    error := false; //пока ошибок нет
    for i := 1 to length(tri) do //сканируем цифры числа
      begin
        error := not (tri[i] in ['0'..'2']); //если цифра не '0', '1', '2', то ошибка (число не троичное)
        if error then break //если ошибка, досрочно прекращаем сканирование
      end
  until not error; //прекрашаем ввод, если нет ошибки
  hex := '0'; //шестнадцатеричное число пока = 0
  for i := 1 to length(tri) do hex := add(add(add(hex, hex), hex), tri[i]); //преобразуем число
  write('     Число в шестнадцатеричной системе счисления: ', s, hex);
  readln
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
19.02.2017, 16:43
Cyborg Drone,
tab легко свернуть функцией, но боюсь, тогда десятичная арифметика все же появится.
0
Модератор
10431 / 5719 / 3404
Регистрация: 17.08.2012
Сообщений: 17,395
19.02.2017, 20:22
bormant, вот и я так подумал...

Хотел ещё таблицу упростить, поскольку все переносы имеют место быть под побочной диагональю, но, опять же, требуются "непозволительные" вычисления, поэтому всё же внёс в таблицу переносы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.02.2017, 20:22
Помогаю со студенческими работами здесь

Программа перевода из двоичной системы счисления в шестнадцатеричную систему счисления
1.Программа перевода из двоичной системы счисления в шестнадцатеричную систему счисления. 2.Лишние пробелы.Дана строка состоящая из...

Программа перевода из двоичной системы счисления в шестнадцатеричную систему счисления.
1.Программа перевода из двоичной системы счисления в шестнадцатеричную систему счисления.

Программа для перевода в любую систему счисления
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; main() { int n; const int radix; ...

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

Программа для перевода заданного числа в троичную систему счисления
Программа для перевода заданного числа в троичную систему счисления,напишите плиз код с коментами


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru