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

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

Войти
Регистрация
Восстановить пароль
 
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
#1

Предел макисально целого числа - C++

03.05.2013, 08:54. Просмотров 491. Ответов 6
Метки нет (Все метки)

Подскажите пожалуйста, В СРР есть предел макисально целого числа он записан в long long int, есть ли какая-то возможность обойти этот предел.
P.S. Если не понятно вышенаписанное, я имел ввиду, что для вычисления факториала больше 20 потребуется реализовать длинную арифметику, но может есть способо вычислить факториал без этого, просто сняв ограничение по long long int? Компьютеру все равно что складывать, умнажать и какой длины числа.
P.S.S. Это я к тому, что видел на одном сайте как задачу по вычислению факториала (1<=факториал<=1000 ) уложились по коду в 66 символов на СРР.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2013, 08:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Предел макисально целого числа (C++):

Описать функцию DigitN(K, N) целого типа, возвращающую N-ю цифру целого положительного числа K - C++
Помогите выполнить задание. Описать функцию DigitN(K, N) целого типа, возвращающую N-ю цифру целого положительного числа K (цифры в...

Определить цифры целого числа (тип числа - целое без знака) - C++
Определить цифры целого числа( тип числа-целое без знака), вычислить сумму полученных цифр. Помогите ,пожалуйста.

Конструирование значения целого числа или числа с плавающей точкой по его дампу - C++
Как сконструировать значения целого числа(char, short int, long int) или числа с плавающей точкой(float,double) по его дампу(bin,oct,hex)??

Из целого числа получить новое, состоящее из нечетных цифр числа (2315663 -> 3153) - C++
Из целого числа получить новое, состоящее из нечетных цифр числа (2315663 -&gt; 3153) на DevC++. Заранее спасибо

нужен тип целого числа для числа 19!= 121 645 100 408 832 000 - C++
Нужно посчитать сумму цифр целого положительного числа. double summacifr(double chislo) { double summa=0; while(chislo) ...

Дана строка. Определить, представляет ли она собой запись целого числа или запись дробного числа - C++
Дана строка.Необходимо определить ,представляет ли она собой запись целого числа,записать дробного числа.Считайте ,что дробная часть...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
03.05.2013, 09:10 #2
Цитата Сообщение от NaikoN Посмотреть сообщение
В СРР есть предел макисально целого числа он записан в long long int, есть ли какая-то возможность обойти этот предел.
нет
если не создавать своих чисел(формат числа)

long long int, занимает 8 байт и максимальное число знаковое будет 7F FF FF FF FF FF FF FF или 63 единицы в двоичном виде
беззнаковое FF FF FF FF FF FF FF FF 64 единички в двоичном виде
больше туда не влезет
если нужно большее число то нужно создать свой тип
например так
C++
1
2
3
4
struct LongLongLong
{
unsigned char v[16];
}
и переопределить все операции
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
04.05.2013, 00:00  [ТС] #3
ValeryS, А Вы не могли бы привести пример переопределения операции умножения пожалуйста???
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
04.05.2013, 00:03 #4
честно говоря вот так навскидку не могу
надо вспоминать математику
но принцип типа умножение столбиком
abit
262 / 261 / 33
Регистрация: 03.02.2013
Сообщений: 722
04.05.2013, 02:41 #5
Подскажите пожалуйста, В СРР есть предел максимально целого числа он записан в long long int, есть ли какая-то возможность обойти этот предел.
тебе соврали, обойти есть куча способов, как самому (несколько способов - через строковую арифиметику, массивную и на бинарных массивах), так и с помощью готовой библиотеки (смотреть в сторону библиотек С++ для длинных чисел)

но может есть способ вычислить факториал без этого, просто сняв ограничение по long long int?
гарантированно быстрого нет) лучше взять язык без привязки к типам в этом случае, где есть просто числа и есть бесконечные числа) всё осуществляется именно по длинной арифметике наиболее оптимальными алгоритмами без задумок что и как со стороны программиста

Это я к тому, что видел на одном сайте как задачу по вычислению факториала (1<=факториал<=1000 ) уложились по коду в 66 символов на СРР.
и не увидете, либо используйте готовые библиотеки C++ типа этой - http://gmplib.org/
либо haskell где без этих библиотек это будет в 1 строчку

по теме темы - предел максимального числа зависит от компилятора+платформы+ архитектуры, хороший стиль - не заваливать индекса дин.массива больше чем sise_t, не хранить в контейнерах больше c::size_type ( c - это тип контейнера vector/map/deque и т.д.) не орудовать арифметикой с числами больше чем sizeof(size_t) ну в общем понятно, однако при необходимости можно ручками замутить арифметику любой разрядности
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
04.05.2013, 08:40  [ТС] #6
ValeryS, Правильно ли я понял Вас, то есть переопределение всех операция тоже самое, что реализовать длинную арифметику для каждой операции???

abit, Пдскажите пожалуйста, что это за библиотеки для длинных чисел в СРР??? (Их названия пожалуйста, или где можно почитать о них??)
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
04.05.2013, 09:24 #7
Цитата Сообщение от NaikoN Посмотреть сообщение
переопределение всех операция тоже самое, что реализовать длинную арифметику для каждой операции???
если подразумевать под длинной арифметикой это
htt p://ru.wikipedia.org/wiki/Длинная_арифметика
то да
Цитата Сообщение от NaikoN Посмотреть сообщение
Пдскажите пожалуйста, что это за библиотеки для длинных чисел в СРР???
посмотри эту тему
Длинная арифметика

Добавлено через 6 минут
вот еще тема
Длинная арифметика на Си
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2013, 09:24
Привет! Вот еще темы с ответами:

. Дана строка, изображающая десятичную запись целого положительного числа. Вывести строку, изображающую двоичную запись этого же числа - C++
срочно помогите пожалуйста

Определить, представляет ли строка собой запись целого числа, запись дробного числа - C++
Выполните задания с использованием библиотечного класса string. Дана строка. Необходимо определить, представляет ли она собой запись...

Нахождение целого числа - C++
Среди x1-x100 найти ближайшее к любому целому #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { ...

Корень из целого числа. - C++
Здравствуйте, решал вот эту задачу. Написал следующий код: #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.05.2013, 09:24
Ответ Создать тему
Опции темы

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