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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 691
#1

Сверхбольшие числа - C++

30.08.2011, 11:52. Просмотров 2141. Ответов 22
Метки нет (Все метки)

Нужно например мне хранить и выполнять действия с числом 1 235 589 145 236 987 125 874 369 123 253 964 123 362 584 128 983 125 412 325 698 458 488 548, 152

Как это сделать, но так чтоб нечего "Особого" не пришлось писать ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.08.2011, 11:52     Сверхбольшие числа
Посмотрите здесь:

Сверхбольшие числа - Delphi
Можно ли получить число превышающие тип int64? число из 100,1000 символов более чем уверен что можно но как? ассемблер? Как вывести...

Сверхбольшие числа - C++ Builder
Нашёл класс Verylong реализующий сверхбольшие числа и действия над ними. Работают некоторые действия, но умножение выдаёт ошибку. ...

Сверхбольшие целые положительные числа - Assembler
Добре время суток, помогите в решение задачи, заранее спасибо: 1 .Разработать процедуру Big2Sub (var M1, M2, Carry; len: word), где...

Получить из цифр числа четырехзначные числа, у которых цифры исходного числа идут в том же порядке - Pascal
Задано натуральное трехзначное число. Получить из его цифр четырехзначные числа, у которых цифры исходного числа идут в том же порядке, но...

Определить все натуральные числа m, не превосходящие числа N. Сумма всех цифр числа m-простое число. - Pascal
Уславие Определить все натуральные числа m, не превосходящие числа N. Сумма всех цифр числа m-простое число.

За 1 просмотр файла вывести сначала числа меньше а, потом числа из промежутка а b, затем, числа больше b - C (СИ)
Дан файл с числами типа float, пользователь вводит 2 числа а и b, за 1 просмотр файла нужно вывести сначала числа меньше а, потом числа из...

Найти двухзначные числа, равные сумме куба числа единиц и квадрата числа десятков - Turbo Pascal
Найти двухзначные числа, равные сумме куба числа единиц и квадрата числа десятков

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.08.2011, 13:55     Сверхбольшие числа #21
Цитата Сообщение от KING1994 Посмотреть сообщение
где каждая цыфра ето елемент масива
уже нехорошо.
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
30.08.2011, 15:00     Сверхбольшие числа #22
погугли вообще, помню друг находил работу и длинной арифметикой произвольной точности, организованной через массив. И несколько функций: умножение, деление и т.д.
занимало полтора экрана
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2012, 15:04     Сверхбольшие числа
Еще ссылки по теме:

Найти числа, меньше 1000, сумма делителей (без самого числа) которых, больше данного числа - Алгебра
Найти числа, меньше 1000, сумма делителей(без самого числа) которых, больше данного числа. помогите плз

Определены ли на множестве: N(натуральные числа), Z(целые числа), Q, 2Z(четные числа), 2Z+1(нечетные) - Логика и множества
4 Определены ли на множестве: N(натуральные числа), Z(целые числа), Q, 2Z(четные числа), 2Z+1(нечетные), R (рациональные),...

Вывести все четные числа начиная с числа N и до числа M - Pascal
помогите кто чем может: while вывести все четные числа начиная с числа N и до числа M. числа задает пользователь.

Вывести все четные числа, начиная с числа N и до числа M - Pascal
составить программу в паскале,используя оператор WHILE.Вывести все четные числа,начиная с числа N и до числа M.Числа N и M задает...

Вывести все нечетные числа, начиная с числа N и до числа М - Pascal ABC
Вывести все нечетные числа, начиная с числа N и до числа М. Числа N и М задает пользователь


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

Или воспользуйтесь поиском по форуму:
chuvak2008f
4 / 4 / 1
Регистрация: 10.01.2012
Сообщений: 43
26.05.2012, 15:04     Сверхбольшие числа #23
Люди помогите сделать побитовое умножение (&) со сверхбольшими числами или если точнее массив цифр в *char который являет собой сверхбольшое число.
Для примера приведу код из класса Verylong реализующий обычное целочисленное умножение сверхбольших.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Умножение
class Verylong {
    private:
        Verylong multdigit(int) const;
        Verylong mult10(int) const;
    public:
        char *vlstr; // массив цифр
        int  vlen;    // размер
        int  vlsign;
        friend Verylong operator * (const Verylong &, const Verylong &);
...};
Verylong operator * (const Verylong &u, const Verylong &v) {
    Verylong pprod("1"), tempsum("0");
 
    for (int j=0; j<v.vlen; j++) {
        int digit = v.vlstr[j] - '0';
        pprod = u.multdigit(digit); // uuu * v = pprod
        pprod = pprod.mult10(j);
 
        tempsum += pprod;
    }
    tempsum.vlsign = u.vlsign ^ v.vlsign;
    return tempsum;
}
//умножение аргумента на 10
Verylong Verylong::mult10(int num) const {
    if (*this != zero) {
        int j = 0, dd = vlen + num, bb = vlen - 1;
        char *temp = new char [dd + 1]; assert(temp != NULL);
 
        for (j=0; j<vlen; j++)  temp[j] = vlstr[bb-j];
        for (j=vlen; j<dd; j++) temp[j] = '0';
 
        temp[dd] = '\0';
        Verylong result(temp);
        delete [] temp;
        return result;
    } else
        return zero;
}
//умножение числа на аргумент (цифру)
Verylong Verylong::multdigit(int num) const {
    int j = 0, carry = 0, dprod = 0;
    if( num ) {
        char *temp = new char[vlen + 2]; assert(temp != NULL);
        for(j = 0; j<vlen; j++) {
            int d1 = vlstr[j] - '0',
            digitprod = d1*num + carry;
 
            if( digitprod >= 10 ) {
                carry = digitprod/10;
                digitprod -= carry*10;
            } else
                carry = 0;
            temp[j] = digitprod + '0';
        }
 
        if( carry ) temp[j++] = carry + '0';
        temp[j] = '\0';
 
        strrev(temp);
        Verylong result(temp);
        delete [] temp;
        return result;
    } else
        return zero;
}
Yandex
Объявления
26.05.2012, 15:04     Сверхбольшие числа
Ответ Создать тему
Опции темы

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