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

Длинная арифметика: умножение двух длинных чисел - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Реализация очереди: код не компилируется http://www.cyberforum.ru/cpp-beginners/thread1205263.html
Все сделал по методичке где ошибка? не компилируется.... #include"stdafx.h" #include"iostream" #include"conio.h" using namespace std; struct Data {
C++ Вывести множество цифр, входящих в изображение числа N, которые не входят в изображение числа M Помогите пожалуйста Сама задача " Пусть заданы два натуральных числа N и M. Составить программу, которая выводила множество цифр, входящих в изображение числа N, которые не входят в изображение числа M. " Заранее спасибо. http://www.cyberforum.ru/cpp-beginners/thread1205255.html
Если возможно, упорядочить булевы вектора, или вывести сообщение "Вектора несравнимы" C++
помогите пожалуйста с задачей: Даны булева вектора a и b длины n. Если возможно, упорядочить их, или вывести сообщение "Вектора несравнимы". Работа с битовыми сдвигами, не знаю даже с какой стороны подойти.
C++ Сделать блок-схему к курсовой работе (движения тела, брошенного под углом к горизонту)
Есть готовая курсовая работа. Нужно вот сделать блок-схему с метода решения . Уже есть написанная с программы. Документ вышлю лично .
C++ Как записать команду в консоль windows несколько раз? http://www.cyberforum.ru/cpp-beginners/thread1205224.html
Запускаю консоль в цикле, так: for(int k=0;k<=10;k++){ system ("start cmd"); } как мне каждый раз. в открытой консоли, прописать команду??? т.е нужно 10 раз одно и тоже)) Спасибо)
C++ Заменить первое число нулем, если оно меньше или равно второму Даны два действительных числа. Заменить первое число нулем, если оно меньше или равно второму и оставить числа без изменения в противном случае подробнее

Показать сообщение отдельно
VitoAcidrain
 Аватар для VitoAcidrain
58 / 58 / 1
Регистрация: 11.03.2013
Сообщений: 191
11.06.2014, 11:06     Длинная арифметика: умножение двух длинных чисел
Всем привет!
Снова к Вам за помощью.

Алгоритм умножения двух длинных чисел:

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
void HugeInteger::hugeElementsMultiplication(HugeInteger &a, HugeInteger &b){
    int base = 10;
    int i, j;
    int r = 0;
    int preFinal, remember;
    int final[80];
    
    for (i = 0; i < 80; i++)
        final[i] = 0;
 
    for (i = 40 - 1; i>-1; i--){
        for (j = 40 - 1; j>-1; j--){
            preFinal = a.HugeArray[i] * b.HugeArray[j];
            preFinal += r;
 
            if (preFinal >= base){
                r = (preFinal / base);
                preFinal -= (r % base);
            }
            else {
                r = 0;
                final[i + j + 1] += preFinal;
 
                if (final[i + j + 1] >= base){
                    remember = (final[i + j + 1] / base);
                    final[i + j + 1] -= remember % base;
                    r += remember;
                }
 
                if (final[i + j + 1] >= base){
                    final[i + j + 1] += (final[i + j + 1] / base);
                    final[i + j + 1] = final[i + j + 1] % base;
                }
            }
        }
    }
 
    for (i = 0; i < 80; i++)
        cout << final[i];
}
Выводит неправильный результат (должен быть 17712).
Миниатюры
Длинная арифметика: умножение двух длинных чисел  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru