Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Vaderkos
76 / 76 / 3
Регистрация: 31.03.2015
Сообщений: 435
#1

Имплементация Number - C++

24.02.2016, 13:59. Просмотров 381. Ответов 10
Метки нет (Все метки)

Хочу заимплементировать свои числа в С++. Подскажите наводящие темы и статьи. Смысл в динамическом увеличении количества битов для числа при его выходе за рамки битов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2016, 13:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Имплементация Number (C++):

Calculate total number of operations needed to convert a number from origin to sigle digit - C++
To predict person's fate, numerologist takes time of a person's life in seconds,then adds all it's digits together. If that sum of digits...

Given a year number. Output the number of days of that year - C++
Помогите решить! Given a year number. Output the number of days of that year. Example: Input: 1900 Output 365

create a number - C++
Добрый всем вечер!Затрудняюсь написать программу,которая запрашивает у пользователя число.Задача: - подсчитать количество разрядов...

Expecting variable or number - C++
Недавно начал учить c++ компилятор gcc 4.8 под Freebsd 10 появляются ошибки: expecting variable or number Это серьезные ошибки? ...

Randome number в функции - C++
Доброго времени суток! хочу поделиться негодованием по поводу работы всем знакомой функции rand() Начинал делать одно, но наткнулся...

Number of days in a year - C++
Given a year number. Output the number of days of that year. Example: Input: 1900 Output 365 Example: Input:

10
gru74ik
Эксперт CЭксперт С++
4207 / 1853 / 198
Регистрация: 20.02.2013
Сообщений: 4,992
Записей в блоге: 22
25.02.2016, 13:04 #2
Vaderkos, вам нужно создать динамически расширяемый класс целых чисел?

Добавлено через 5 минут
Vaderkos, дело в том, что C++ - это статически типизированный язык программирования. Если Вы объявите переменную определённого типа, позже Вы не сможете изменить тип этой переменной. Разве что, Вы воспользуетесь приведением типов (static_cast).
1
rikimaru2013
C++ Game Dev
2440 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
25.02.2016, 13:19 #3
gru74ik, но есть же ж массив байт std::vector<std::uint8_t> куда можно запихнуть любое число - хранить в таком виде и возвращать в таком виде.
2
Vaderkos
76 / 76 / 3
Регистрация: 31.03.2015
Сообщений: 435
25.02.2016, 13:31  [ТС] #4
gru74ik, Я пишу свой простенький интерпретатор лиспа, и поэтому хочу сделать свои числа, как вариант я думал создать массив битов для этого дела или просто биты(взять какую-нибудь библиотеку). Но не знаю как лучше это дело провернуть.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
25.02.2016, 13:32 #5
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
но есть же ж массив байт
Есть же Boost.Multiprecision, откуда можно стащить cpp_int
0
rikimaru2013
C++ Game Dev
2440 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
25.02.2016, 13:35 #6
Croessmah, так буст еще подключать надо)
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
25.02.2016, 13:46 #7
rikimaru2013, так вектором тоже надо уметь пользоваться
0
cyber-satyr
393 / 164 / 28
Регистрация: 10.12.2015
Сообщений: 717
25.02.2016, 13:54 #8
Vaderkos, как ни странно lisp проще всего написать на lisp'е. Хочется лезть вниз, ищи длинную арифметику.

Добавлено через 1 минуту
класс Number будет базовым, а его наследниками: Inetegеr, Float, Rational, Complex. Сам по себе он будет подезен только для предиката numberp.
1
Vaderkos
76 / 76 / 3
Регистрация: 31.03.2015
Сообщений: 435
25.02.2016, 14:04  [ТС] #9
cyber-satyr, Если б мог я бы написал базовый класс object или variable но как прикрутить динамическую типизацию не знаю(( Уже читаю исходники clojure

Добавлено через 15 секунд
А потом бы все от него наследовал
0
cyber-satyr
393 / 164 / 28
Регистрация: 10.12.2015
Сообщений: 717
25.02.2016, 14:39 #10
Я уже говорил тебе надо таскать типы вместе с данными. Например, базовый класс NewCoolLispObject должен иметь поле с данными о типе и поле содержащее указатель на данные. Его типы могут быть только двух значений по стандарту CLHS, это atom или not atom, либо же cons и not cons, т.к. atom это все что не cons. Его наследники содержат свое поле для типа. например, если это клaсc наследник типа atom, то его типы могут быть такие как number, symbol, character, lambda. В свою очередь у наследников типа number может быть тип integer, floating, rational, complex. И так далее. Для начала нарисуй на бумаге дерево иерархии типов. Проверку типа можно осуществлять дедовым способом — битовой маской. Тебе не мешало бы досконально проработать sicp, книга завершается интерпретатором scheme.
1
Vaderkos
76 / 76 / 3
Регистрация: 31.03.2015
Сообщений: 435
25.02.2016, 14:40  [ТС] #11
cyber-satyr, вот sicp я не читал -> время пришло
0
25.02.2016, 14:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2016, 14:40
Привет! Вот еще темы с ответами:

Number of days in a year - C++
Given a year number. Output the number of days of that year. Example: Input: 1900 Output 365 Example: Input:

random number<<is the code true? - C++
# include &lt;iostream&gt; using namespace std; void main () { setlocale (LC_ALL,&quot;rus&quot;); int a,b,c,d,count; a = rand()%8+2; b =...

Given natural number n. Calculate expression - C++
Помогите решить задачу плс парни! очень надо сегодня заканчивается Deadline Given natural number n. Calculate expression: Note that...

Arrays. Calculate the number of items greater than 5 - C++
народ помогите написать программу Write the program code according to the developed algorithm using dynamic arrays, user-defined...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.