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

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

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

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

30.08.2011, 11:52. Просмотров 2178. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сверхбольшие числа (C++):

Даны натуральные числа M, N. Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми - C++
Даны натуральные числа M, N. Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми. ...

Как написать программу-калькулятор чтобы было можно додавать 2 числа, 3 числа, 4 числа, n чисел? - C++
Как написать программу-калькулятор чтобы было можно додавать 2 числа, 3 числа, 4 числа, n чисел?

Ввести в программу строку (числа, латиница), считать только числа, записать числа в массив - C++
Нужна помощь! Срочно! Нужно ввести в программу строку (числа, латиница), считать только числа, записать числа в массив. Помогите,...

Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми - C++
Даны натуральные числа M, N. Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми. ...

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

Дан файл F, компонентами которого являются целые числа. Получить в файле G все нечетные числа, входящие в файл F. Числа в файле G должны следовать - C++
Помогите доздать с++) вот задание: Дан файл F, компонентами которого являются целые числа. Получить в файле G все нечетные числа, входящие ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
30.08.2011, 13:18 #16
diagon, а с++ только в <gmpxx.h> и реализовано? более нигде?

Добавлено через 1 минуту
Цитата Сообщение от diagon Посмотреть сообщение
Есть в пайтоне. А в бусте есть интерпретатор пайтона.
т.е. используя буст можно нормально связать с++ и пайтон отдельно не устанавливая интерпертатор?
grizlik78
Эксперт С++
1908 / 1440 / 111
Регистрация: 29.05.2011
Сообщений: 2,996
30.08.2011, 13:20 #17
Цитата Сообщение от AzaKendler Посмотреть сообщение
а с++ только в <gmpxx.h> и реализовано? более нигде?
А зачем где-то ещё?
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
30.08.2011, 13:38 #18
все понял. для студии это MPIR
KING1994
-68 / 6 / 0
Регистрация: 18.07.2011
Сообщений: 77
30.08.2011, 13:52 #19
Можно записать число в масив(1 число в целый масив)
где каждая цыфра ето елемент масива.
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
30.08.2011, 13:54 #20
KING1994, это только хранение. Возможность же выполнять действия с такими числами снова возвращает нас к самописному классу.
fasked
Эксперт С++
4935 / 2515 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.08.2011, 13:55 #21
Цитата Сообщение от KING1994 Посмотреть сообщение
где каждая цыфра ето елемент масива
уже нехорошо.
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
30.08.2011, 15:00 #22
погугли вообще, помню друг находил работу и длинной арифметикой произвольной точности, организованной через массив. И несколько функций: умножение, деление и т.д.
занимало полтора экрана
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2012, 15:04
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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