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

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

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

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

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

Хочу заимплементировать свои числа в С++. Подскажите наводящие темы и статьи. Смысл в динамическом увеличении количества битов для числа при его выходе за рамки битов.
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
Модератор
Эксперт CЭксперт С++
3899 / 1657 / 188
Регистрация: 20.02.2013
Сообщений: 4,719
Записей в блоге: 21
25.02.2016, 13:04     Имплементация Number #2
Vaderkos, вам нужно создать динамически расширяемый класс целых чисел?

Добавлено через 5 минут
Vaderkos, дело в том, что C++ - это статически типизированный язык программирования. Если Вы объявите переменную определённого типа, позже Вы не сможете изменить тип этой переменной. Разве что, Вы воспользуетесь приведением типов (static_cast).
rikimaru2013
C++ Game Dev
2352 / 1058 / 233
Регистрация: 30.11.2013
Сообщений: 3,508
25.02.2016, 13:19     Имплементация Number #3
gru74ik, но есть же ж массив байт std::vector<std::uint8_t> куда можно запихнуть любое число - хранить в таком виде и возвращать в таком виде.
Vaderkos
76 / 76 / 3
Регистрация: 31.03.2015
Сообщений: 423
25.02.2016, 13:31  [ТС]     Имплементация Number #4
gru74ik, Я пишу свой простенький интерпретатор лиспа, и поэтому хочу сделать свои числа, как вариант я думал создать массив битов для этого дела или просто биты(взять какую-нибудь библиотеку). Но не знаю как лучше это дело провернуть.
Croessmah
Модератор
Эксперт CЭксперт С++
12730 / 7190 / 802
Регистрация: 27.09.2012
Сообщений: 17,741
Записей в блоге: 2
Завершенные тесты: 1
25.02.2016, 13:32     Имплементация Number #5
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
но есть же ж массив байт
Есть же Boost.Multiprecision, откуда можно стащить cpp_int
rikimaru2013
C++ Game Dev
2352 / 1058 / 233
Регистрация: 30.11.2013
Сообщений: 3,508
25.02.2016, 13:35     Имплементация Number #6
Croessmah, так буст еще подключать надо)
Croessmah
Модератор
Эксперт CЭксперт С++
12730 / 7190 / 802
Регистрация: 27.09.2012
Сообщений: 17,741
Записей в блоге: 2
Завершенные тесты: 1
25.02.2016, 13:46     Имплементация Number #7
rikimaru2013, так вектором тоже надо уметь пользоваться
cyber-satyr
347 / 164 / 28
Регистрация: 10.12.2015
Сообщений: 747
25.02.2016, 13:54     Имплементация Number #8
Vaderkos, как ни странно lisp проще всего написать на lisp'е. Хочется лезть вниз, ищи длинную арифметику.

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

Добавлено через 15 секунд
А потом бы все от него наследовал
cyber-satyr
347 / 164 / 28
Регистрация: 10.12.2015
Сообщений: 747
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
76 / 76 / 3
Регистрация: 31.03.2015
Сообщений: 423
25.02.2016, 14:40  [ТС]     Имплементация Number #11
cyber-satyr, вот sicp я не читал -> время пришло
Yandex
Объявления
25.02.2016, 14:40     Имплементация Number
Ответ Создать тему
Опции темы

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