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

Метод Карацубы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка оператора = http://www.cyberforum.ru/cpp-beginners/thread1176984.html
Есть некий класс. И два класса-наследника. Надо перегрузить оператор =, к тому же в дочерних классах вызывать перегрузку в базовом классе. Ошибка кода в том, что нельзя перегрузить оператор в классе, где есть чистая виртуальная функция. class CDyplSpecialist { protected: string name; string surname; string spec; public: CDyplSpecialist() ;
C++ Как визуализировать программу Есть полностью готовая консольная программа,которая решает СЛАУ.Как мне визуализировать ее?Как например сделать,чтобы я мышкой тыкал на какое-то поле и вводил значения коэффициентов уравнений? http://www.cyberforum.ru/cpp-beginners/thread1176935.html
Вычислить время выполнения C++
Помогите пожалуйста вычислить время выполнения данной программы. Уже что только не вставляла, но программа просто не выводит время, ошибок тоже никаких не выдает. Подскажи, что куда вставлять. Сам код без времени: #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; vector <int> add( const vector<int>& a, const vector<int>& b) {
C++ Sdl 2.0 Dev-cpp
Под спойлером лог компилятора, по сути не может найти winapifamily.h, где его брать, куда пихать итд, сдл поставил полностью 25 0 E:\sdl2\x86_64-w64-mingw32\include\SDL2\SDL_config.h In file included from E:\sdl2\x86_64-w64-mingw32\include/SDL2/SDL_config.h 31 E:\sdl2\x86_64-w64-mingw32\include\SDL2\SDL_stdinc.h from E:\sdl2\x86_64-w64-mingw32\include/SDL2/SDL_stdinc.h...
C++ Открытие Ini файла http://www.cyberforum.ru/cpp-beginners/thread1176911.html
Есть файл в формате ini: bank1=Belarusbank currency1=USD buy1=3050 sell1=3055 bank2=Belinvestbank buy2=3045 sell2=3053 currency2=USD
C++ Работа с файлом и базой данных в C++ Нужно написать программу на C++, которая построчно берет информацию из текстового файла, после чего помещает ее в базу данных. Если у кого-то уже есть наработки, поделитесь пожалуйста. Желательно код как можно проще, так как я только начал изучать язык. подробнее

Показать сообщение отдельно
ollien
0 / 0 / 0
Регистрация: 01.12.2013
Сообщений: 26
15.05.2014, 16:25     Метод Карацубы
Помогите реализовать метод Карабуцы для длинных чисел. У меня получилось сделать его только для более коротких чисел. Ведь если допустим взять числа длиной в 10000 символов, то проделывать деление числа на две части и все остальные действия придется несколько раз. Но я совершенно не сильна в рекурсии. Помогите пожалуйста добавить ее.
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
 
void mul(vector <int> & a, vector <int> b)
{
    int k = 0;
    int a0 = 0, a1 = 0, b0 = 0, b1 = 0;
    if (a.size() > b.size()) swap(a,b);
    if (a.size() / 2 < 10)
    {
        a0 = 0;
        int st = 1;
        for (int i = 0; i < a.size()/2; i++)
        {
            cout << a[i];
            a0 += a[i]*st;
            st *= 10;
        }
 
        a1 = 0;
        int k = a.size()/2;
        st = 1;
        for (int i = a.size()/2; i < a.size(); i++)
        {
            cout << a[i];
            a1 += a[i] * st;
            st *= 10;
        }
        cout << endl;
    }
    if (b.size() / 2 < 10)
    {
        b0 = 0;
        int st = 1;
        k = a.size()/2;
        for (int i = 0; i < b.size() - (a.size() - k); i++)
        {
            b0 += b[i] * st;
            st *= 10;
        }
 
        b1 = 0;
        st = 1;
        for (int i = b.size() - (a.size() - k); i < b.size(); i++)
        {
            b1 += b[i] * st;
            st *= 10;
        }
    }
    cout << a0 << " " << a1 << endl;
    cout << b0 << " " << b1 << endl;
    cout << k << endl;
    int c0 = a0 * b0;
    int c1 = a1 * b1;
    int c2 = c0 + c1 - (a0 - a1)*(b0 - b1);
    int m = 1;
    for (int i = 0; i < k; i++)
    {
        m *= 10;
    }
    int m1 = m;
    for (int i = 0; i < k; i++)
    {
        m1 *= 10;
    }
    cout << c0 + c2 * m + c1*m1;
}
 
int main()
{
    
    string s;
    getline(cin,s);
    vector <int> a;
    for (int i = s.length() - 1; i >= 0; i--)
    {
        a.push_back(s[i] - '0');
    }
    getline(cin,s);
    vector <int> b;
    for (int i = s.length() - 1; i >= 0; i--)
    {
        b.push_back(s[i] - '0');
    }   
    mul(a,b);
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru