|
88 / 32 / 16
Регистрация: 01.06.2019
Сообщений: 672
|
|
Рекурсивная функция перевода числа в двоичную, восьмеричную и шестнадцатеричную системы22.08.2019, 21:18. Показов 20988. Ответов 21
Метки нет (Все метки)
Пользователь вводит число в десятичной системе счисления. Перевести его в двоичную, восьмеричную и шестнадцатеричную
системы. (не забываем заменять числа на ABCDEF в 16-ричной системе) Сделать с помощью рекурсии
0
|
|
| 22.08.2019, 21:18 | |
|
Ответы с готовыми решениями:
21
Перевод чисел из десятичной системы счисления в двоичную, восьмеричную, шестнадцатеричную
|
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
|||||||
| 22.08.2019, 23:07 | |||||||
|
Rudman132, привет!
1
|
|||||||
|
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
|
||||||
| 22.08.2019, 23:33 | ||||||
|
Можно и в С-шные строки переделать, думаю, так чуть быстрей будет, если нельзя использовать флаги вывода hex и oct.
2
|
||||||
|
88 / 32 / 16
Регистрация: 01.06.2019
Сообщений: 672
|
||
| 23.08.2019, 00:03 [ТС] | ||
|
Добавлено через 8 минут Перевод хотя бы в одну из систем, но проще
0
|
||
|
863 / 513 / 215
Регистрация: 19.01.2019
Сообщений: 1,216
|
|||||||||||
| 23.08.2019, 01:15 | |||||||||||
main
1
|
|||||||||||
|
Модератор
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
|
||
| 23.08.2019, 06:16 | ||
|
nalbe666, Cortas, SomniPhobia,
Все бы хорошо, однако:
0
|
||
|
863 / 513 / 215
Регистрация: 19.01.2019
Сообщений: 1,216
|
|
| 23.08.2019, 10:26 | |
|
zss, почему именно строка и чем плох int?
0
|
|
|
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
|
|
| 23.08.2019, 10:37 | |
|
zss, согласен с nalbe666, зачем строку? Нет, можно, конечно, но зачем? Навряд ли вы захотим использовать модификаторы ввода др. систем счисления. Математические операции ещё никто не отменял, и в таком случае нужно либо заморочиться со строчной арифметикой, либо перевести строку в int и там уже конвектировать, либо что-то ещё более хитрое.
Может мы вас неправильно поняли?
0
|
|
|
Модератор
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
|
||||||
| 23.08.2019, 11:01 | ||||||
|
По условию задачи задается число в ДЕСЯТИЧНОЙ системе счисления, а не в двоичной.
Вы же число уже представленное в двоичной системе счисления преобразуете в строку содержащую коды битов этого исходного двоичного числа. А перевод из десятичной в двоичную у Вас выполняет
0
|
||||||
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
|
| 23.08.2019, 11:56 | |
|
На вид коды нормальные. zss, соглашусь, что под капотом так оно и есть.
А со строкой тогда как делать? 1. Длинную арифметику писать или 2. Задействовать контейнер bitset или ?
0
|
|
|
863 / 513 / 215
Регистрация: 19.01.2019
Сообщений: 1,216
|
|
| 23.08.2019, 12:15 | |
|
zss, В начале мы вводим число в консоль. Оно попадает в буфер как набор чаров, представляющих число в десятичной системе. Это оно? А затем уже забираем его оператором как int для упрощения дальнейших манипуляций и универсальности.
0
|
|
|
Модератор
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
|
|||
| 23.08.2019, 13:36 | |||
|
Добавлено через 2 минуты
0
|
|||
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
||||||
| 23.08.2019, 15:53 | ||||||
Сообщение было отмечено Rudman132 как решение
Решение
zss, Rudman132, я написал универсальный код.
Программа принимает на входе число в виде строки. Изменяя значение переменной radix_input, можно назначить любую систему счисления на приём числа. То есть, принимается число в виде строки в системе счисления с основанием radix_input. Приводится в десятичный вид и сохраняется в переменную типа unsigned long long (ull). Затем вызывается рекурсивная функция, которая переводит в нужные системы счисления из списка bases_convert. Всё рекурсивно при переводе из десятичной в указанную систему. Затем происходит подготовка к выводу (функцией number_to_string()) и сам вывод результата на консоль. Для компиляции кода нужна поддержка C++17. Кликните здесь для просмотра всего текста
1
|
||||||
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
|||||||||||
| 23.08.2019, 16:05 | |||||||||||
|
У меня в строке 60 ошибка.
Вместо
1
|
|||||||||||
|
88 / 32 / 16
Регистрация: 01.06.2019
Сообщений: 672
|
|||||||
| 23.08.2019, 16:05 [ТС] | |||||||
1
|
|||||||
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
|||
| 23.08.2019, 16:12 | |||
|
Число нужно запросить один раз, а при рекурсии стачивать его функцией. A1: Если пришедшее в функцию число x равно нулю, то завершить функцию, иначе Делим число x на основание системы (8 или 16 или 2 и т. д.). Остаток от деления кладём в контейнер. Частное передаём снова на обработку в A1 в качестве нового значения x.
1
|
|||
|
88 / 32 / 16
Регистрация: 01.06.2019
Сообщений: 672
|
|||||||
| 23.08.2019, 16:18 [ТС] | |||||||
0
|
|||||||
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
|
| 23.08.2019, 16:21 | |
|
0
|
|
|
88 / 32 / 16
Регистрация: 01.06.2019
Сообщений: 672
|
|
| 23.08.2019, 16:21 [ТС] | |
|
0
|
|
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
|||||||||||||||||||
| 23.08.2019, 17:01 | |||||||||||||||||||
Сообщение было отмечено Rudman132 как решение
Решение1. Убрать while 2. Добавить if, у котрого по первой ветке идёт: взятие остатка и вывод его на консоль, рекурсивный вызов функции для дальнейшего разложения с передачей ей частного return convert (...); Добавлено через 6 минут
Rudman132, вот с рекурсией и по проще.
Rudman132, чтобы был перевод в другую систему счисления в строках 7 и 8 вместо 2 укажи какую надо систему счисления. Лучше сделать отдельной переменной: Аргументом функции передавать основание системы счисления, в которую нужно конвертировать это число.
1
|
|||||||||||||||||||
| 23.08.2019, 17:01 | |
|
Помогаю со студенческими работами здесь
20
Программа перевода числа из 10ой системы в двоичную Написать рекурсивную функцию перевода числа с десятичной системы исчисления в двоичную
Перевод из десятичной системы счисления в двоичную, восьмеричную, 16-ричную Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера 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. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|