Member 13686192 Ответов: 1

Преобразование десятичной дроби в любую базу (шестнадцатеричную, восьмеричную, двоичную). Я понимаю первую часть, но застрял на части "контур функции fromdecimal"?


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


Таким образом, общий поток процесса таков:
⦁ Попросите номер для преобразования
⦁ Задать для базы количество
⦁ Попросите базу для преобразования в
⦁ Набор десятичных чисел в возвращение “toDecimal” прохождения кол-во и базы-в
⦁ Печати кол-во сообщений базы в десятичное десятичное значение
⦁ Установите number-out для возврата “fromDecimal” , передающего десятичное число и базовое значение
⦁ Печати десятичных сообщение-номер в базу, из

Контур функции fromDecimal:
⦁ Определите строку number-out и инициализируйте ее пустой строкой, то есть ‘ или “ (это позволит нам сцеплять с ней цифры в цикле)
⦁ Установите частную переменную в десятичное число, переданное в
⦁ Создайте цикл while, который проверяет наличие частного больше нуля
⦁ Установить переменную остаток в фактор мод основание-из
⦁ Установите следующую цифру для возврата valueToDigit, проходящего в остатке
⦁ Набор новый-коэффициент переменной целое частное-разделение базы-из
⦁ Выведите этот цикл следующим образом: частное / основание-выход = новое частное , следующая цифра
⦁ Добавить следующую цифру перед номером-out (например, sNumberOut = nextDigit + sNumberOut)
⦁ Установите частное в новое-частное
⦁ (Цикл будет продолжаться до тех пор, пока частное не станет равным нулю)
⦁ Обратный номер-выход

Что я уже пробовал:

# Определите десятичную дробь и часть вторую.
def toDecimal(sNumber, nBase):
десятичная дробь = 0

# Сбор данных для преобразования.
для i в диапазоне(len(sNumber)):

digitPos = len(sNumber) - 1 - i

digit = sNumber[digitPos]

digitVal = digitToValue(цифра, nBase)

если (digitVal == -1):
возврат -1

posVal = nBase ** i

продукт = digitVal * posVal

печать(цифровая, "х", nBase, "^", я, "=", digitVal, "х", posVal, "=", продукт)

десятичное число += произведение

возврат десятичной дроби

numOut = ""
частное = десятичное число
в то время как частное > 0
коэффициент = коэффициент%2



# результат печати
decimalOut = toDecimal(numIn, baseIn)
печать(decimalOut)
печати(numIn,"основание",значение,"десятичных",decimalOut)
numberOut = fromDecimal(десятичный,базовый)
печати("десятичное число",десятичных,"является",numOut,"в базе",baseOut)

Patrice T

Описать проблемы.

Member 13686192

функция, имитирующая метод длинного деления при преобразовании десятичной дроби в другую базу. Он должен будет получить целочисленное десятичное значение и целочисленную базу для его преобразования, а также должен будет вернуть строковое значение, представляющее преобразованное значение. Как бы я это сделал?

Patrice T

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

1 Ответов

Рейтинг:
1

Richard MacCutchan

Вы тот же человек, который отправил сообщение Как создать функцию, имитирующую метод длинного деления преобразования десятичной дроби в другую базу[^], потому что описание точно такое же? Если это так, Пожалуйста, удалите дубликат профиля. Если нет, то смотрите ответы там.