Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 20.07.2023
Сообщений: 3

Перевод из 8-ичной в 3-ичную систему исчисления

20.07.2023, 11:41. Показов 939. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, не могу написать программу перевода из 8 в 3 систему исчисления
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.07.2023, 11:41
Ответы с готовыми решениями:

Перевод натурального числа в р-ичную систему счисления
Составить программу перевода данного натурального числа в р-ичную систему счисления (2 <= р <= 9) ,используя рекурсивную подпрограмму.

Рекурсивный перевод десятичного числа в P-ичную систему счисления
Рекурсивный перевод Напишите рекурсивную процедуру для перевода десятичного числа в P-ичную систему счисления. В данной задаче...

Перевести число из 3-ичной в 10-ичную систему исчисления
нужно перевести число из 3-ой формы в 10 форму.помогите пожалуйста.

17
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,680
Записей в блоге: 14
20.07.2023, 11:51
А почему только из восьмеричной в троичную? Вот универсальный конвертор:

Python
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
def calcCC():
   system = int(input('Из какой СС перевести число? (2-36) '))
   final = int(input('В какую СС перевести число? (2-36) '))
   num = input('Введите число: ')
 
   tmp=uc(num,system)
   res=cu(tmp,final)
   
   if res is None:
       print("Ошибка в изображении числа")
   else:
       print(res)
 
def uc(s,r):
    if s is None:
        return None
    digits="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    acc=0
    for a in s:
        p=digits.find(a)
        if (p>=r) or (p<0):
            return None
        acc=acc*r+p
    return acc
    
def cu(s,r):
    if s is None:
        return None
    digits="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    res=""
    while(s>0):
        k=s%r
        res=digits[k]+res
        s=s//r
    return res
    
calcCC()
1
0 / 0 / 0
Регистрация: 20.07.2023
Сообщений: 3
20.07.2023, 11:52  [ТС]
нужна именно из 8 в 3
0
Заблокирован
20.07.2023, 12:13
Цитата Сообщение от Imunelee Посмотреть сообщение
из 8-ичной
промежуточно в 10ю можно переводить?
0
0 / 0 / 0
Регистрация: 20.07.2023
Сообщений: 3
20.07.2023, 12:15  [ТС]
нужно
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,680
Записей в блоге: 14
20.07.2023, 12:18
Цитата Сообщение от Imunelee Посмотреть сообщение
нужна именно из 8 в 3
-

Python
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
def conv83(oct_num):
   tmp=uc(oct_num,8)
   res=cu(tmp,3)
   return res
 
def uc(s,r):
    if s is None:
        return None
    digits="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    acc=0
    for a in s:
        p=digits.find(a)
        if (p>=r) or (p<0):
            return None
        acc=acc*r+p
    return acc
    
def cu(s,r):
    if s is None:
        return None
    digits="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    res=""
    while(s>0):
        k=s%r
        res=digits[k]+res
        s=s//r
    return res
    
n=input("Введите восьмеричное число: ")
print("В троичной СС               : ",conv83(n))
1
Любознательный
 Аватар для YuS_2
7401 / 2247 / 359
Регистрация: 10.03.2016
Сообщений: 5,187
20.07.2023, 12:46
Python
1
2
3
4
5
6
7
8
9
10
def convss(num, tb=3, fb=8):
    n = int(num, fb) if isinstance(num, str) else int(num)
    symn = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    if n < tb:
        return symn[n]
    else:
        return convss(n // tb, tb) + symn[n % tb]
k = input()
 
convss(k)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,680
Записей в блоге: 14
20.07.2023, 12:57
YuS_2, изюм из булки...
0
Любознательный
 Аватар для YuS_2
7401 / 2247 / 359
Регистрация: 10.03.2016
Сообщений: 5,187
20.07.2023, 13:01
Цитата Сообщение от Catstail Посмотреть сообщение
изюм из булки...
дык, он везде...
булка с изюмом вкуснее... гораздо!
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,680
Записей в блоге: 14
20.07.2023, 13:02
Цитата Сообщение от YuS_2 Посмотреть сообщение
дык, он везде...
- незачёт.
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
20.07.2023, 13:06
Ну, так можно:

Python
1
2
3
4
5
6
7
8
9
10
def to_3(n):
    res = ''
    while n:
        n, rem = divmod(n,3)
        res = str(rem) + res
    return res
 
n_8 = input('Введите восьмеричное число: ')
n_3 = to_3(int(n_8, 8))
print(n_3)
0
Любознательный
 Аватар для YuS_2
7401 / 2247 / 359
Регистрация: 10.03.2016
Сообщений: 5,187
20.07.2023, 13:08
Цитата Сообщение от Catstail Посмотреть сообщение
- незачёт.
чойта?
шта не работает?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,680
Записей в блоге: 14
20.07.2023, 13:18
Цитата Сообщение от YuS_2 Посмотреть сообщение
шта не работает?
- работает. Но зачёт - автору int.
0
20.07.2023, 13:24

Не по теме:

Цитата Сообщение от Catstail Посмотреть сообщение
Но зачёт - автору int.
А, ну этада, на сто процентов! :)

0
0 / 0 / 0
Регистрация: 26.11.2022
Сообщений: 9
20.07.2023, 13:35
Цитата Сообщение от Imunelee Посмотреть сообщение
нужна именно из 8 в 3
Что скажете насчет такого варианта?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def octal_to_ternary(octal):
    decimal = 0
    power = 0
    while octal != 0:
        decimal += (octal % 10) * 8 ** power
        octal //= 10
        power += 1
 
    ternary = ""
    while decimal != 0:
        ternary = str(decimal % 3) + ternary
        decimal //= 3
 
    return ternary
 
 
octal_num = int(input("Введите число в восьмеричной системе исчисления: "))
ternary_num = octal_to_ternary(octal_num)
print("Число в троичной системе исчисления:", ternary_num)
0
Любознательный
 Аватар для YuS_2
7401 / 2247 / 359
Регистрация: 10.03.2016
Сообщений: 5,187
20.07.2023, 13:56
Цитата Сообщение от Catstail Посмотреть сообщение
Но зачёт - автору int.
у меня тут был вариант, конвертированный с powershell:
Python
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
80
81
82
83
84
85
86
87
88
import re
def conv (n,s1:int,s2:int):
    arr = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    if (s1 == s2):
        print('Невменяемые операции не выполняются')
        return
 
    if s1 <= 10:
        x = s1 - 1
        pat = r''+f'[^0-{x}.]'
        if re.search(pat,n,re.I) or len(re.findall(r'\.',n)) > 1:
            print(f"Таких чисел {n}, в системе счисления с основанием {s1}, не существует")
            return
    else:
        h = arr[(s1-1)].lower()
        pat = r''+f'[^\d.a-{h}]'
        if re.search(pat,n,re.I) or len(re.findall(r'\.',n)) > 1:
            print(f"Таких чисел {n}, в системе счисления с основанием {s1}, не существует")
            return
        
    if not re.search('\.',n):
        n += '.0'
    nint,nfrct = n.split('.')
    i,k,numdi,numdf = (len(nint)-1),0,0,0
 
    if nint:
        for itemint in nint:
            if itemint.upper() in arr:
                idx = arr.index(itemint.upper())
                numdi += idx * pow(s1,i)
            else:
                raise ValueError('Такого числа не существует: ',itemint)
            i -= 1
    else:
        numdi = 0
 
    if nfrct != '0':
        for itemfrct in nfrct:
            k -= 1
            if itemfrct.upper() in arr:
                idx = arr.index(itemfrct.upper())
                numdf += idx * pow(s1,k)
            else:
                raise ValueError('Такого числа не существует.',itemfrct)
    else:
        numdf = 0.0
 
    numdec = numdi + numdf
    if s2 == 10:
        if numdf > 0:
            return numdec
        else:
            return numdi
 
    onint,onfrct = str(numdec).split('.')
    outstr,otmpint = '',int(onint)
    if otmpint:
        while otmpint > 0:
            outstr = str(arr[(otmpint % s2)]) + outstr
            otmpint //= s2
    else:
        outstr = arr[0]
 
    if onfrct != '0':
        outstr = outstr + '.'
        otmpfrct,j = float('0.' + str(onfrct)),0
        while otmpfrct > 0 and j < 30:
            j += 1
            otmpfrct *= s2 
            outstr = outstr + arr[int(otmpfrct)]
            if otmpfrct >= 1:
                otmpfrct -= int(otmpfrct)
 
    return outstr
 
while 1:
    num = input("Введите число ('~' - выход): ")
    if num == '~': break
    try:
        a = int(input(f"Введите основание системы счисления входящего числа (2-36): "))
        if not 2<=a<=36: raise ValueError('Что это?')
        b = int(input(f"Введите основание системы счисления выходящего числа (2-36): "))
        if not 2<=b<=36: raise ValueError('Что это?')
    except:
        print('Неправильный ввод системы счисления')
        continue
        
    print(conv(num,a,b))
- так он и с дробями работает... тут явный зачет должон быть.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,680
Записей в блоге: 14
20.07.2023, 14:01
Цитата Сообщение от YuS_2 Посмотреть сообщение
тут явный зачет должон быть.
- тут да. Только громоздко...
0
Любознательный
 Аватар для YuS_2
7401 / 2247 / 359
Регистрация: 10.03.2016
Сообщений: 5,187
20.07.2023, 14:28
Цитата Сообщение от Catstail Посмотреть сообщение
Только громоздко...
в powershell нет такой реализации int, как в питоне, вот и монструозно немного вышло...

Добавлено через 9 минут
вот исходная часть кода
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.07.2023, 14:28
Помогаю со студенческими работами здесь

Перевод из 10-ичной в 3-ичную систему счисления
Ребят, у меня тут возникла следующая проблема. Мне нужно выполнить следующие задание : (Дано целое число n&lt;80. Вывести его в троичной...

Перевод числа из 4-ичной в 5-ичную систему счисления
помогите пожалуйста написать программку которая переводит из 4-ичной СС в 5-ичную СС...просто только начали изучать ассемблер,и тут такое...

Перевод дробной части из 10-ичной CC в n-ичную.
Доброе утро! Нужно перевести число из 10-ичной в n-ичную СС. Перевод целой части я уже сделал. А вот на переводе дробной засел конкретно,...

Перевод из Л-ичной системы счисления в К-ичную
Доброго времени суток, дорогие друзья. Прошу помочь в решении следующей задачи: Дано вещественное число N в L-ичной системе счисления...

Перевод из 13-ичной системы счисления в 17-ичную
таблица перевода из 13 ричной системы счисления в 17 чную


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru