Форум программистов, компьютерный форум, киберфорум
Наши страницы
Алгоритмы
Войти
Регистрация
Восстановить пароль
 
HoustonEU
0 / 0 / 0
Регистрация: 24.02.2018
Сообщений: 3
1

Дробная часть троично-симметричной системы счисления

24.02.2018, 23:33. Просмотров 336. Ответов 4
Метки нет (Все метки)

Всем привет! У меня возникла проблема. Мне нужен алгоритм перевода дробной части числа из десятичной системы счисления в троично-симметричную. Как переводит целые числа в интернете информации полным полно, а на счёт дробной части ничего. Прошу помочь.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2018, 23:33
Ответы с готовыми решениями:

Написать программу перевода десятичной дроби (только дробная часть) из десятичной системы счисления в 5-ую
Написать программу перевода десятичной дроби (только дробная часть) из десятичной системы счисления...

Операция суммы для симметричной троичной системы счисления
Добрый вечер! Для двоичного сумматора понятно как считается сумма слагаемых и бит переноса,а вот...

Определить, превышает ли умноженная на 10 дробная часть числа его целую часть
Определить превышает ли умноженная на 10 дробная часть числа m/n целую часть m/n . Если...

Отбросить дробную часть числа, если дробная часть равна нулю
Всем доброго времени суток, каким образом можно устроить проверку равна ли дробная часть числа...

Разделить дробное число на 2 части: целая часть числа и его дробная часть
Пользователь вводит с клавиатуры сумму в валюте (дробное число). Вывести по отдельности количество...

4
ili1
Заблокирован
25.02.2018, 09:52 2
HoustonEU
Перевод дробной части можно осуществлять отдельно от
целой части. Вот пример того как это сделать при переводе
числа 0,141 в обычную троичную систему счисления
1. умножаем наше число на 3. (0,141 * 3 = 0,423)
2. целая часть числа 0,423 равна 0 - это и есть первая цифра
после десятичной запятой. То есть имеем 0,0
3. вновь умножаем на 3. (0,423 * 3 = 1,269)
4. целая часть нашего числа 1,269 равна 1 - это вторая цифра
после десятичной запятой. То есть имеем 0,01
ЦЕЛУЮ ЧАСТЬ НЕ РАВНУЮ НУЛЮ ОТБРАСЫВАЕМ. имеем 0,269
5. вновь умножаем на 3. (0,269 * 3 = 0,807)
6. целая часть нашего числа 0,807 равна 0 - это третья цифра
после десятичной запятой. То есть имеем 0,010
7. вновь умножаем на 3. (0,807 * 3 = 2,421)
8. целая часть нашего числа 2,421 равна 2 - четвертая цифра...
То есть имеем 0,0102
НЕ ЗАБЫВАЙТЕ ОТБРАСЫВАТЬ НЕ НУЛЕВУЮ ЧАСТЬ ЧИСЛА 2,421 => 0,421
9. вновь умножаем на 3. (0,421 * 3 = 1,263) и так далее пока не будет достигнута
нужная точность результата.

Добавлено через 9 минут
А вообще (в данном случае) можно умножить на степень числа 3
Например вам нужно перевести число 7,141 в троичное и иметь 5
знаков после запятой (в троичном числе) умножьте исходное число
на 35 = 243 (7,142 × 243). Уберите лишние десятичные знаки
и переводите это число в троичное как целое. По окончании перевода
поставьте запятую, которая отделит 5 последних знаков...
...
Выбирайте любой способ, который вам нравится.
0
HoustonEU
0 / 0 / 0
Регистрация: 24.02.2018
Сообщений: 3
25.02.2018, 13:02  [ТС] 3
В обучную троичную систему я знаю как переводить. Однако с троично-симметричной системой возникают проблемы.
Например, переведём число 0,3 в троично-симметричную:
0,3 * 3 = 0,9 значит записываем 0
0,9 * 3 = 2,7 это значит «-» . (Здесь возникает проблема. У нас уже получается отрицательная дробь. При делении мы прибавляем 1 к результату деления при «-», однако при умножении я предположил, что нужно прибавить 1 к прошлому числу. Получается «0.+-»)
0,7 * 3 = 2,1 это значит «-» (такой же алгоритм сдвига. Значит «0.+0-»)
...
Если продолжить вычисления, получится «0.+0-0+0-0». Можно проверить вычисления. 1/3 - 1/27 + 1/243 - 1/1187 ~ 0,3
Здесь алгоритм работает. Для остатка больше 0,5 нужно добавить 1 к целой части. Сам остаток будет отрицательным. То есть цисло 35,80 = (35+1) - 0,20
Алгоритм не всегда работает, потому что я допускаю где-то логическую ошибку (мне так кажется). Например, 0,19 перевести не получится. Результатом будет отрицательная дробь.
0
ili1
Заблокирован
25.02.2018, 14:19 4
Хорошо, попробуем перевести 0,19 в симметричную троичную систему счисления

1. умножаем на 3. имеем 0,57. наше число 0,0
2. умножаем на 3. имеем 1,71. наше число 0,01 (целую часть отбрасываем)
3. умножаем на 3. имеем 2,16. наше число 0,012 (Цифру 2 я СОХРАНЯЮ)
ТАМ ДАЛЕЕ ВЫ ПОЙМЕТЕ ПОЧЕМУ.
4. умножаем на 3. имеем 0, 48. наше число 0,0120 (достаточно)
ВНИМАНИЕ.
Итак мы получили предварительное число 0,0120
Требуется его перевести в симметричную троичную СС.
Решение
Число 2 будем обозначать как 1- (это двузначное число)
Тогда наше число подвергнется модификации. Имеем
1. 0,0120 (дано)
2. 0,01(1-)0 (в скобках записана цифра 2)
Внимание!!!
3. 0,02-0 (цифра 1 (из скобок) идет наперед к цифре 1 - итого 2)
4. 0,0(1-)-0 (вновь в скобках цифра 2)
Внимание!!!
5. 0,1--0 (цифра 1 идет (как перенос) наперед к цифре 0 - итого 1)
6. 0,+--0 (стандартная запись)
7. есть и другая типа 0,1ii0 - кому как нравится
...
надеюсь теперь проблем не будет; всё это можно делать в уме.
1
HoustonEU
0 / 0 / 0
Регистрация: 24.02.2018
Сообщений: 3
25.02.2018, 14:22  [ТС] 5
Спасибо, огромное!
0
25.02.2018, 14:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2018, 14:22

Выяснить что больше, целая часть числа x, или его дробная часть, умноженная на 10
1)Ввести число x, выяснить что больше: целая часть числа x, или его дробная часть, умноженная на...

Ввести число х, выяснить что большеЖ целая часть х, или его Дробная часть, уу
Ввести число х, выяснить что больше: целая часть х, или его Дробная часть, умноженная на 10. Если...

Ввести число х, выяснить что больше: целая часть х, или его дробная часть, умноженная на 10
Ввести число х, выяснить что больше: целая часть х, или его Дробная часть, умноженная на 10. Если...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru