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

Написать элегантнее класс для сложения больших чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Получить код html-страницы http://www.cyberforum.ru/cpp/thread1783673.html
Нужно через C++ получить код html-страницы по http/https.
C++ Реальная задача для реального проекта для желающих покодить Привет:) Попросили сделать парсер сайта по-дружески, но у меня реально времени на него нет. Если кому-то интересно, могу двигать в нужном направлении и может, при желании, могу пинать за плохой код. Что нужно сделать - парсер с HTTP клиентом. Пример клиента на boost::asio скину, покажу как парсить HTML регулярками (да, есть библиотеки, но думаю руками будет интересней). Могу архитектуру... http://www.cyberforum.ru/cpp/thread1782931.html
Матрица перехода между двумя системами координат в 2D C++
Есть 2 системы координат в 2D пространстве. Есть координаты 2 точек в этих системах координат (как я понимаю, необходимо как раз 2 точки). Нужно найти матрицу перехода (X, Y, fi) между этими системами координат. Не подскажите, где взять готовый код на C++ или другом языке для решения этой задачи. А то решаю в лоб, получаются довольно большие уравнения с тригонометрией и несколькими решениями).
Парсинг и обход дерева C++
С помощью библиотеки htmlcxx парсится веб страничка. На выходе получаю DOM дерево. Ладно бы была одна страничка, тогда написал функцию для обхода, так страничек много и для каждой писать функцию для обхода с соответствующим поиском тегов и атрибутов это ж ппц как не охото. На шарпе юзал AngleSharp с его QuerySelectorAll, писал QuerySelectorAll("tr td:nth-child(1) a") и получал все нужные...
C++ Friend declaration construction http://www.cyberforum.ru/cpp/thread1781382.html
Читаю C++ Templates. The Complete Guide. Вандервурд, Джоссатис В одной из глав речь идет об объявлениях дружественных конструкций. Основная идея такова: template <typename T1, typename T2> void combine(T1, T2); class Mixer
C++ Какой паттерн подойдет, чтобы избежать длинных ветвлений? здравствуйте, есть код схематично такой: class CTest_base { public: CTest_base() : vec() {} virtual ~CTest_base() noexcept {} //something else protected: std::vector<int> vec; }; подробнее

Показать сообщение отдельно
xTr1m
29 / 29 / 8
Регистрация: 06.03.2013
Сообщений: 151
21.07.2016, 18:32     Написать элегантнее класс для сложения больших чисел
Уважаемые тру программисты. Я написал класс для сложения больших чисел. Но вот смотрю на код и понимаю, что написано коряво. Смысл функции вроде бы прост. Идем справа налево и складываем числа, запоминая остаток. Глядя на код opensource проектов и прочее, мне кажется, что моё творение явно можно написать лучше. Тут и много строк, и как-то нелаконично, и куча переменных, несколько if. Помогите мне стать лучше, пожалуйста.

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
CBigNumber Sum(CBigNumber &rhs)
    {
        int overhead = 0;
        CBigNumber newNumber;
 
        list<int>::reverse_iterator it1 = m_values.rbegin();
        list<int>::reverse_iterator it2 = rhs.m_values.rbegin();
 
        while(it1 != m_values.rend() || it2 != rhs.m_values.rend())
        {
            int num1 = 0;
            if(it1 != m_values.rend())
                num1 = *it1++;          
 
            int num2 = 0;
            if(it2 != rhs.m_values.rend())
                num2 = *it2++;
 
            int value = num1 + num2 + overhead;
            if(value >= 10)
            {
                overhead = value / 10;
                value = value % 10;             
            }   
            else
            {
                overhead = 0;
            }
 
            newNumber.m_values.push_front(value);           
        }
 
        if(overhead)
            newNumber.m_values.push_front(overhead);
 
        return newNumber;
    };
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru