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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
30.08.2011, 11:52     Сверхбольшие числа #1
Нужно например мне хранить и выполнять действия с числом 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     Сверхбольшие числа
Посмотрите здесь:

Даны два целых числа A и B (A < B). Вывести в порядке убывания все це-лые числа, расположенные между A и B (не включая числа A и B), а также количеств C++
Дан файл F, компонентами которого являются целые числа. Получить в файле G все нечетные числа, входящие в файл F. Числа в файле G должны следовать C++
C++ От данного числа N вычтем сумму цифр этого числа, от полученного числа опять вычтем сумму цифр и т.д. до тех пор, пока число положительно
C++ Как написать программу-калькулятор чтобы было можно додавать 2 числа, 3 числа, 4 числа, n чисел?
Даны натуральные числа M, N. Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
30.08.2011, 13:55     Сверхбольшие числа #21
Цитата Сообщение от KING1994 Посмотреть сообщение
где каждая цыфра ето елемент масива
уже нехорошо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 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     Сверхбольшие числа
Еще ссылки по теме:

C++ Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми
Даны два числа. Если квадратный корень из второго числа меньше первого числа, то увличить второе число в пять раз с++ C++
Ввести в программу строку (числа, латиница), считать только числа, записать числа в массив C++

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

Или воспользуйтесь поиском по форуму:
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     Сверхбольшие числа
Ответ Создать тему
Опции темы

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