@gahcep

Позиционные системы счисления?

В своем проекте (С++, GUI на C#) понадобилось работать с разными системами счисления (2,6,10,16 и не только). Причем выполнять математические операции над ними (сложение, вычитание, умножение, деление). Работать надо как с натуральными, так и с вещественными числами. И в идеале получать на выходе и целую и дробную части в виде, например, строки — для показа пользователям.



Необходима возможность вызова функции, к примеру, сложения с двумя аргументами: 1 — натуральное число в десятичной системе (2300), 2 — вещественное число в троичной системе («2120.102»)



Существуют ли такие библиотеки (на С++ или на C#), которые могли бы предоставить сей функционал?



Если таких нет, не лучше было бы воплотить в жизнь на каком-нибудь функциональном языке (хотя скорее всего уже есть) и связать с С++ или C#?
  • Вопрос задан
  • 3247 просмотров
Пригласить эксперта
Ответы на вопрос 2
Ogra
@Ogra
Вы смешиваете логику с отображением. (А это один из величайших грехов в программировании)
Не бывает чисел в десятичной системе или в троичной системе — числа, это числа. Бывает десятичная система ЗАПИСИ чисел. (Т.е. речь об отображении).
Если грамотно разделить, то у вас останутся — конвертеры из строковой записи в числовую и обратно, и обычные математические функции.

Например: создайте класс Number, добавьте в него функции:
Number(<число_записанное_строкой>, <разрядность>)
__toString(<разрядность>)
И перегруженные операторы сложения, вычитания, деления.
Ответ написан
oxpa
@oxpa
пару лет назад развлекался подобной штукой (написал себе калькулятор), но классы пришлось писать самому: не нагуглил ничего похожего.

Правда, я хранил всё в виде массивов (и порядок, и мантиссу, и основание СС) и действия над ними выполнял программно. Это явно было очень медленно. Зато иллюстрировало работу с различными основаниями системам счисления.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы