Форум программистов, компьютерный форум, киберфорум
Наши страницы

Длинная арифметика - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Организовать цикл http://www.cyberforum.ru/cpp-beginners/thread658132.html
Вот приболел, а на лабы нужно задание, сижу и не понимаю, что от меня хотят и как это делать. http://f1.s.qip.ru/G1CCNmsq.png Попытался написать что-то типо этого // test_101.cpp : Defines the...
C++ Прервать работу програмы У меня вопрос , могу ли я как то прервать работу программы при невыполненни или выполнении условия? if ((defaultTemp > MaxTemp) or (MaxTemp <MinTemp)) std::cout<<"ERROR!!\n\n WRONG ... http://www.cyberforum.ru/cpp-beginners/thread658118.html
Вывести вещественное число, равное делению первой переменной на вторую C++
Здравствуйте. Помогите пожалуйста с лабораторной... В языке С++ полный ноль, ничего не понимаю. Вот сами задания из лабы: 2. Опишите в программе две переменные целого типа и введите их значения с...
C++ Вывести ASCII–код символа в десятичном, восьмеричном и шестнадцатеричном виде
Здравствуйте. Помогите пожалуйста с лабораторной... В языке С++ полный ноль, ничего не понимаю. Вот сами задания из лабы: 3. Опишите в программе переменную символьного типа и введите ее значение...
C++ Посчитать количество занятых клеток кроссворда http://www.cyberforum.ru/cpp-beginners/thread658107.html
Помогите,пожалуйста решить задачу. Кроссворд размещен в квадрате. Строки и столбцы квадрата нумеруются снизу вверх и слева направо, начиная с 1. Поля для слов располагаются горизонтально либо...
C++ Поиск количества битов для типа Всё понятно, кроме вот этого ((log((double)a)/log((double)2))); Мы логарифм числа а(числа 2 147 483 647) делим на логарифм числа 2 (на калькуляторе 9.33/0.3 = 31 (всё это примерно)). 1).Так вот... подробнее

Показать сообщение отдельно
I.M.
566 / 549 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
26.09.2012, 23:24
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
std::vector<int> StrToInt (std::string str)
{
    std::vector<int> vec(str.cbegin(), str.cend());
    
    for (auto it = vec.begin(); it!= vec.end(); ++it)
    {
        *it -= '0';
    }
    return vec;
}
 
std::string IntToStr (std::vector<int> vec)
{
    std::string str(vec.cbegin(), vec.cend());
 
    for (auto it = str.begin(); it!= str.end(); ++it)
    {
        *it += '0';
    }
    return str;
}
 
std::string Inverse (std::string str)
{
    std::string inv_str(str);
    std::reverse(inv_str.begin(), inv_str.end());
    return inv_str;
}
 
std::string Add (std::string str1, std::string str2)
{
    std::vector<int> vec1 = StrToInt (Inverse (str1));
    std::vector<int> vec2 = StrToInt (Inverse (str2));
 
    int max_size = std::max(vec1.size(), vec2.size());
    vec1.resize(max_size);
    vec2.resize(max_size);
 
    std::vector<int> vec_sum;
    vec_sum.reserve(max_size);
    
    int digit = 0;
    for (auto vec1_iter = vec1.cbegin(), vec2_iter = vec2.cbegin(); vec1_iter != vec1.end(); ++vec1_iter, ++vec2_iter)
    {
        vec_sum.push_back((*vec1_iter + *vec2_iter)%10 + digit);
        digit = (*vec1_iter + *vec2_iter)/10;
    }
    if (digit != 0) 
        vec_sum.push_back(1);
 
    return Inverse(IntToStr(vec_sum));
}
Слегка отредактировал программу.
Почитайте про то, что такое указатели и ссылки. В чем разница между передачей объекта в функцию напрямую и, например, по ссылке. Тогда увидите, что еще надо исправить в программе.
Еще про ключевое слово const почитайте. Когда и где его нужно использовать. Его тоже нужно добавить в код.
Насчет добавления нулей в меньший массив - честно говоря, не очень согласен. Ибо пустая трата памяти. Ну да ладно. Изучайте пока язык.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru