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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
ToyMach1ne
Сообщений: n/a
#1

Умножение длинных целых 11-ричных чисел в виде строк - C++

23.10.2009, 18:54. Просмотров 1040. Ответов 3
Метки нет (Все метки)

Доброго времени суток. Если кому приходилось сталкиваться с умножением двух длинных целых чисел (неважно какая система счисления), представленных в виде строк, с последующей записью в результирующую строку, подкиньте, пожалуйста, идейку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2009, 18:54     Умножение длинных целых 11-ричных чисел в виде строк
Посмотрите здесь:

Быстрое умножение длинных чисел. C++
C++ Длинная арифметика. Умножение двух длинных чисел.
C++ Умножение длинных чисел с фиксированной запятой
Умножение длинных чисел C++
C++ Умножение длинных чисел
C++ Умножение двух длинных чисел
C++ Длинная арифметика: умножение двух длинных чисел
Создать класс длинных целых чисел C++
C++ Умножение/деление длинных целых чисел из строк
Сделать сложение, вычитание, умножение и деление длинных чисел C++
C++ Перегрузка операций для класса целых двоичных чисел в виде строк
C++ Умножение длинных чисел

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
23.10.2009, 21:08     Умножение длинных целых 11-ричных чисел в виде строк #2
мой вариант. вывод в массив, в строку сам уж преобразуешь. без знаковое умножение. принцип думаю понятен
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
#include <iostream>
#include <string>
 
using namespace std;
int main(){
    int shift=0, temp, firstNumVal, numVal, sizeRez, countNum;
    string firstNum, secondNum;
    cout<< "Enter first number: ";  cin>> firstNum ;
    cout<< "Enter first number: ";  cin>> secondNum ;
    sizeRez=firstNum.length()+secondNum.length();
    int* product = new int  [sizeRez];
    
//  // temp
//  firstNum="0";
//  secondNum="123"; sizeRez=6;
//  int* product = new int  [sizeRez];
    memset(product, 0, sizeRez*sizeof(int));
 
    for (int f=firstNum.length(); --f>=0;)
    {
        firstNumVal=firstNum[f]-'0';
        countNum=shift;
        for (int s=secondNum.length(); --s>=0;)
        {           
            numVal=firstNumVal*(secondNum[s]-'0');
            product[countNum]    += numVal%10;
            if (product[countNum]>=10) 
                {product[countNum]-=10; ++product[countNum+1];}
            product[countNum+1]  += numVal/10;
            if (product[countNum+1]>=10) 
                {product[countNum+1]-=10;; ++product[countNum+2];}
            ++countNum;
        }
        ++shift;
    }
 
    for (int i=sizeRez; --i>=0;)
        cout<<product[i];
    cout<<endl; system("pause");
    return 0;
}
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
24.10.2009, 20:00     Умножение длинных целых 11-ричных чисел в виде строк #3
Есть стандартная библиотека libgmp для этих целей.
ToyMach1ne
Сообщений: n/a
25.10.2009, 12:55     Умножение длинных целых 11-ричных чисел в виде строк #4
спасибо
Yandex
Объявления
25.10.2009, 12:55     Умножение длинных целых 11-ричных чисел в виде строк
Ответ Создать тему
Опции темы

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