0 / 0 / 0
Регистрация: 17.01.2021
Сообщений: 24

Перевод чисел в разные сс без перевода в 10

25.09.2021, 19:07. Показов 5174. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача такая:
Нужно написать функцию перевода числа из системы счисления 9 в систему счисления 3
3 и 9 это родственные системы счисления
на бумаге я знаю что каждая цифра в 9 это 2 цифры(так как 3**2=9) в 3
но вот как перевести программой
НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ:
перевод в 10
int()
bin()
hex()
oct()
да)) вот так вот много ограничений
надеюсь найдется человек который поможет
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.09.2021, 19:07
Ответы с готовыми решениями:

Перевод из 16-й в 2-ю без перевода в 10-ю
Помогите пожалуйста написать процедуру в паскале перевода из 16-й системы в 2-ю без перевода в 10-ю

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

Перевод числа из 8-й системы счисления в 2-ю без перевода в 10-ю
нужно написать две программы в с++ 1) Написать программу, которая переводит число из 8-й сис*те*мы счисления в 2-ю, не переводя все...

11
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
25.09.2021, 19:41
По запросу в гугл "перевод из одной системы счисления в другую python", по первой же ссылке было найдено готовое решение.
Python
1
2
3
4
5
6
7
8
9
10
11
12
def convert_base(num, to_base=10, from_base=10):
    # first convert to decimal number
    if isinstance(num, str):
        n = int(num, from_base)
    else:
        n = int(num)
    # now convert decimal to 'to_base' base
    alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    if n < to_base:
        return alphabet[n]
    else:
        return convert_base(n // to_base, to_base) + alphabet[n % to_base]
Добавлено через 1 минуту
Да и тут на форуме не одна тема с данным вопросом. Меняются только основания систем счисления.

Добавлено через 9 минут
Python
1
2
3
4
5
6
7
8
def converter93(n: int) -> str: 
    s = ''
    h = '012'
    while n > 0:
        s = h[n % 3] + s
        n = n // 3
    
    return s if s else '0'
Вот решение под конкретную задачу. Из системы с основанием 9 в систему с основанием 3.
0
0 / 0 / 0
Регистрация: 17.01.2021
Сообщений: 24
25.09.2021, 19:42  [ТС]
спасибо конечно, что постарался и открыл первую ссылку, но мог не напрягаться, ведь я четко написала БЕЗ ПЕРЕВОДА В ДЕСЯТИЧНУЮ БЕЗ int()
но ты молодец конечно что ткнул меня носом в первую ссылку
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,318
25.09.2021, 20:20
vakkrehevn, вроде так
Python
1
2
3
4
5
6
7
8
9
10
11
12
def num9_to_num3(dig):
    base9 = list('012345678')
    b3 = '000102101112202122'
    base3 = [b3[i:i+2] for i in range(0,18,2)]
    
    res = ''
    for s in dig[::-1]:
        res += base3[base9.index(s)][::-1]
        
    return res[::-1]
 
print(num9_to_num3('54321234'))
0
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
25.09.2021, 20:29
Лучший ответ Сообщение было отмечено vakkrehevn как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
def convert93(n) -> str:
    x = 0
    res = ''
    digits = '012'
    for i in range(len(str(n))):
        x = n % 10
        n = n // 10
        for i in range(2):
            res = digits[x % 3] + res
            x = x // 3
    return res
0
0 / 0 / 0
Регистрация: 17.01.2021
Сообщений: 24
25.09.2021, 20:33  [ТС]
да вот теперь
спасибо рациональный способ
0
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
25.09.2021, 20:35
vakkrehevn, Если что, у меня на входе число а не строка.
Число в котором запрещено использовать "9", т.к. система девятеричная.
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,318
25.09.2021, 20:46
vakkrehevn, а как (в каком типе данных) подается переменная "n" в функцию? (Чтобы потом её можно //10 и %10)

Добавлено через 8 минут
Кликните здесь для просмотра всего текста
так короче
Python
1
2
3
4
5
6
7
8
9
10
11
12
def num9_to_num3(dig):
    base9 = list('012345678')
    b3 = '00 01 02 10 11 12 20 21 22'.split()
    
    res = ''
    for s in dig:
        res += base3[base9.index(s)]
        
    return res.strip('0')
    
 
print(num9_to_num3(input()))
1
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
25.09.2021, 21:13
Цитата Сообщение от Gdez Посмотреть сообщение
а как (в каком типе данных) подается переменная "n" в функцию?
Передается число, переменная типа int. На него наложено ограничение, оно не должно содержать цифру "9", чтобы внешне походить на число из девятеричной системы счисления.

Добавлено через 2 минуты
Цитата Сообщение от Gdez Посмотреть сообщение
Чтобы потом её можно //10 и %10
Тут эти операции используются для того, чтобы "попилить" число на цифры. Т.к. объяснить питону, что число девятеричное не получится. Соответственно вместо логически правильных для девятеричного числа //9 и %9 используем "10".

Добавлено через 20 минут
Вот еще вариант. На входе число (с вышеописанными ограничениями, без девяток). На выходе тоже число.

Python
1
2
3
4
5
6
7
8
9
def convert93int(n: int) -> int:
    res = 0
    for i in range(len(str(n))):
        x = n % 10
        n = n // 10
        for j in range(2):
            res = res + (x % 3) * 10 ** (i * 2 + j ) 
            x = x // 3
    return res
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,318
25.09.2021, 21:42
anton78spb, если я правильно понял условие - int нельзя использовать, а на вход в функцию подается строка - число в девятеричной СС (оно int по определению не может быть)
0
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
25.09.2021, 22:50
Gdez, Я понял это по другому. Нельзя использовать int() как функцию, для преобразования в десятичную систему счисления. Так же как и функции hex(), bin(), oct(), преобразующие в другие систему счисления.
А вообще int-ом пользоваться можно.
Но ваш вариант str -> str офигенно элегантный
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,741
Записей в блоге: 14
26.09.2021, 08:28
Гибридный вариант:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def conv93(n):
    r=0
    p=1
    digs=[0,1,2,10,11,12,20,21,22]
    while(n>0):
       k=n%10
       print(k,r)
       r=r+digs[k]*p
       p=p*100
       n=n//10
    return r
    
print(conv93(17))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.09.2021, 08:28
Помогаю со студенческими работами здесь

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

Перевод чисел в разные СС
Здраствуйте! Я студент Алматинского Авто-Дорожного Колледжа! У мена начались сессии по всем предметам! Но на все время не хвотает! ...

Перевод чисел в разные сс C++ Bulder
Здравствуйте прошу помощи в дополнении программы: В программе работает все кроме перевода чисел с 2 сс. Помогите пожалуйста дописать...

Перевод чисел в разные системы счисления
Как заменить цифры от 10 буквами ABCDEFGHIJKLMNOP......... #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;list&gt; ...

Перевод чисел в разные системы исчисления
Доброе утро форомчане, можете пожалуйста написать программу в windows form,программа должна содержать 3 текст бокса,каждый это своя система...


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

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

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru