Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Vaderkos
 Аватар для Vaderkos
75 / 75 / 3
Регистрация: 31.03.2015
Сообщений: 402
24.02.2016, 13:59     Имплементация Number #1
Хочу заимплементировать свои числа в С++. Подскажите наводящие темы и статьи. Смысл в динамическом увеличении количества битов для числа при его выходе за рамки битов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2016, 13:59     Имплементация Number
Посмотрите здесь:

C++ Number of days in a year
create a number C++
C++ random number<<is the code true?
C++ Number of days in a year
Создать класс, допустим, с именем Number C++
Given a year number. Output the number of days of that year C++
C++ Given natural number n. Calculate expression
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gru74ik
Модератор
 Аватар для gru74ik
3498 / 1507 / 181
Регистрация: 20.02.2013
Сообщений: 4,352
Записей в блоге: 21
25.02.2016, 13:04     Имплементация Number #2
Vaderkos, вам нужно создать динамически расширяемый класс целых чисел?

Добавлено через 5 минут
Vaderkos, дело в том, что C++ - это статически типизированный язык программирования. Если Вы объявите переменную определённого типа, позже Вы не сможете изменить тип этой переменной. Разве что, Вы воспользуетесь приведением типов (static_cast).
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2274 / 990 / 226
Регистрация: 30.11.2013
Сообщений: 3,291
25.02.2016, 13:19     Имплементация Number #3
gru74ik, но есть же ж массив байт std::vector<std::uint8_t> куда можно запихнуть любое число - хранить в таком виде и возвращать в таком виде.
Vaderkos
 Аватар для Vaderkos
75 / 75 / 3
Регистрация: 31.03.2015
Сообщений: 402
25.02.2016, 13:31  [ТС]     Имплементация Number #4
gru74ik, Я пишу свой простенький интерпретатор лиспа, и поэтому хочу сделать свои числа, как вариант я думал создать массив битов для этого дела или просто биты(взять какую-нибудь библиотеку). Но не знаю как лучше это дело провернуть.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12268 / 6955 / 782
Регистрация: 27.09.2012
Сообщений: 17,254
Записей в блоге: 2
Завершенные тесты: 1
25.02.2016, 13:32     Имплементация Number #5
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
но есть же ж массив байт
Есть же Boost.Multiprecision, откуда можно стащить cpp_int
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2274 / 990 / 226
Регистрация: 30.11.2013
Сообщений: 3,291
25.02.2016, 13:35     Имплементация Number #6
Croessmah, так буст еще подключать надо)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12268 / 6955 / 782
Регистрация: 27.09.2012
Сообщений: 17,254
Записей в блоге: 2
Завершенные тесты: 1
25.02.2016, 13:46     Имплементация Number #7
rikimaru2013, так вектором тоже надо уметь пользоваться
cyber-satyr
Заблокирован
25.02.2016, 13:54     Имплементация Number #8
Vaderkos, как ни странно lisp проще всего написать на lisp'е. Хочется лезть вниз, ищи длинную арифметику.

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

Добавлено через 15 секунд
А потом бы все от него наследовал
cyber-satyr
Заблокирован
25.02.2016, 14:39     Имплементация Number #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.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2016, 14:40     Имплементация Number
Еще ссылки по теме:

Given natural number n. Calculate the expression shown on image C++
Arrays. Calculate the number of items greater than 5 C++
Randome number в функции C++
Expecting variable or number C++
C++ Calculate total number of operations needed to convert a number from origin to sigle digit

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

Или воспользуйтесь поиском по форуму:
Vaderkos
 Аватар для Vaderkos
75 / 75 / 3
Регистрация: 31.03.2015
Сообщений: 402
25.02.2016, 14:40  [ТС]     Имплементация Number #11
cyber-satyr, вот sicp я не читал -> время пришло
Yandex
Объявления
25.02.2016, 14:40     Имплементация Number
Ответ Создать тему
Опции темы

Текущее время: 09:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru