• Как сравнивать числа четвёртой точности в C11?

    Вам нужен тип __float128. Вы пытаетесь сравнить комплексные числа.
    Ответ написан
    1 комментарий
  • Как реализовать выполнение действий на C++ при изменении данных в таблице MySQL?

    @res2001
    Developer, ex-admin
    Используйте MySQL Connector/C++ для подключения к mysql и отправки запросов, на основании ответов делайте то что нужно.
    Ответ написан
    1 комментарий
  • Всегда ли нужно использовать тип int?

    BacCM
    @BacCM
    C++ почти с рождения
    Всё зависит от целей. В подавляющем большинстве случаев можно использовать int и не беспокоиться о перерасходе памяти.
    Задумывается стоит если таких переменных миллиарды или ресурсы очень ограничены.
    Я бы скорее задумывался о возможности переполнения, не всегда результат операции с переменными конкретного типа в него помещается. Это важнее, чем мистическая экономия.
    И еще важно чтобы типы в выражении соответствовали друг другу и ожиданию программиста.
    Ответ написан
    Комментировать
  • С чем работать на C++ в Linux Mint?

    @neosapient
    VC9, VC11, QT4, QT5, MySQL
    Ставь в качестве компилятора gcc, а в качестве среды разработки Qt Creator.
    У меня эта связка сейчас на Linux Mint 19 стоит.
    Ответ написан
    1 комментарий
  • Керниган, Ритчи: Упражнение 1.13, Я что-то не так понял?

    Гистограмма длин показывает распределение количества встретившихся слов от их длины, т.е. вам нужно нарисовать n полосок (от 1 до n где n максимальная длина слова), в каждой полоске должно быть количество делений пропорциональное количеству слов данной длины. Т.е. если слов из 6 символов вдвое больше чем слов из 8, то полоска для 6-символьных слов должна быть вдвое длинней.
    Ответ написан
    Комментировать
  • Проверка гипотезы на случайных (или неизвестного источника) числовых данных в виде ряда. Вопрос организации?

    @rPman
    Вы странно задали вопрос. зачем вам знание о том что последовательность не случайна? Собирайте данные, стройте распределение, считайте его параметры.. все по терверу, это будут качественные оценки ваших данных.

    Вы хотите проверить, верная ли у вас стратегия?
    Самое простое - написать простейшее приложение, которое по котировкам (или даже по свечкам, совет используйте наихудший вариант цент min/max и не забывайте про комиссию брокера/биржи) будет эмулировать работу биржи.

    Затем реализуйте ваши стратегии и тестируйте их с помощью этого приложения и истории данных с биржи. Само собой у вашей стратегии будут параметры, подбирайте их, автоматически (алгоритмов многомерной оптимизации тьма либо тупым перебором)
    Когда то давно игрался с этим, в некоторых случаях даже успешно, вот пример результатов аналитики по двум параметрам, значения выше 100 - профит, нижнияя диаграмма - количество сделок, чем больше тем лучше

    В зависимости от стратегии, успешные на тестах могут оказаться успешными в реальности. Это позволит вам проверить почти любые ваши гипотезы, пока объемы ваших сделок будут пренебрежительно малы относительно объемов на бирже.

    Например можете воспользоваться готовым тестером от mt4, на сколько я помню, оно умеет работать с пользовательскими историческими данными.

    p.s. почему объем сделок должен быть мал? потому что рынок реагирует на ваши сделки и тем сильнее, чем они больше.
    Ответ написан
    1 комментарий
  • Эмулятор роутера. Для теста?

    @sash999
    просто админ из деревни
    Ответ написан
    Комментировать
  • Почему условие if ( a == a) может не выполняться для Embedded-разработки?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    float b;
    ...
    if (b == b)

    Не выполняется тогда и только тогда, когда в b -- NaN.

    Обоснование есть в стандарте: пункт стандарта C99 6.2.6.1:4 говорит:
    Two values (other
    than NaNs) with the same object representation compare equal, but values that compare
    equal may have different object representations.
    .
    Ответ написан
    Комментировать
  • С++, как добавлять элементы в hash_map?

    myjcom
    @myjcom Куратор тега C++
    #include <iostream>
    #include <memory>
    #include <unordered_map>
    #include <list>
    
    struct Listener
    {
      std::string _name;
      Listener(std::string name) : _name{ name }{}
      ~Listener() = default;
    };
    
    using Listeners = std::unordered_map<std::string, std::list<Listener>>;
    
    class EventManager
    {
    public:
      EventManager(std::list<std::string>& eventTypes);
      //...
      ~EventManager() = default;
      void print()
      {
        for(const auto& v : *m_listeners)
        {
          std::cout << v.first << " -> ";
          for(const auto& s : v.second)
          {
            std::cout << s._name << ' ';
          }
          std::cout << std::endl;
        }
      }
    private:
      std::unique_ptr<Listeners> m_listeners;
    };
    
    EventManager::EventManager(std::list<std::string>& eventTypes)
                              : m_listeners { std::make_unique<Listeners>() }
    {
      auto insert_it(std::end( *m_listeners ));
      for (const auto &et : eventTypes)
      {
        insert_it = m_listeners->insert( insert_it, {et, {}} );
      }
    }
    
    int main()
    {
      std::list<std::string> events { "Open", "Move", "Close" };
      EventManager eManager{ events };
      eManager.print();
    }

    Еще свою хэш-функцию желательно написать.
    Ответ написан
    5 комментариев
  • Как можно узнать количество нулей в числе?

    Вычислить логарифм по основанию 10.

    10^x = a
    x = log10(a)
    Ответ написан
    Комментировать
  • Можно ли как-то в c++ узнать принадлежность объекта классу?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Зачем вам это? Есть полиморфизм, а касты -- это плохой стиль почти всегда.

    Можно много чего использовать, в том числе и тэги. В базовом классе создаёте перечисление, где каждый элемент -- тип наследника + 1 элемент на тип базового класса. В базовом классе определяете виртуальный метод вроде type() и реализуете его для всех наследников.

    Но перед тем, как сделать это, хорошо подумайте над тем, надо ли оно вам. Про SOLID почитайте, в особенности про букву L.
    Ответ написан
    Комментировать
  • С++, Как решить такое на с++???

    demon416nds
    @demon416nds
    Разработчик на чем попало
    зачем тебе double если с целыми числами работать собрался?
    простейший вариант в цикле от числа до 1 проверять остаток от деления
    и выводить если он равен нулю.
    for (int i=x;i>0;i--)
    if (x % i==0)
    cout << i << "\n";

    давно не писал на си такчто могу ошибаться в синтаксисе
    Ответ написан
    Комментировать
  • Клиентский код в итоге пишется в процедурном стиле?

    Stalker_RED
    @Stalker_RED
    Смешались в кучу кони, люди...

    ООП нужен для управления сложностью.
    В простых проектах он только вносит лишний головняк в плане проектирования, но в сложных - позволяет разделять огромную ужасную бизнес-логику на какие-то отдельные блоки/модули/классы с которыми можно работать не пытаясь затолкать в голову весь проект.
    Вот я юзаю метод Billng.getUserBalance() и не задумываюсь что там внутри этого getUserBalance()
    может там чтение из файла, или запрос к базе данных, или может лазером посылают сигнал на луну - меня не волнует, мне только циферка нужна.

    Паттерны (шаблоны проектирования же) нужны для того, чтобы объяснить ДРУГИМ ПРОГРАММИСТАМ что за хрень мы тут написали.
    Можно писать код, который вообще ни на что не похож и не соответствует никаким шаблонам. И тем людям, которые захотят разобраться в коде вынуждены будут его прочесть целиком и осмыслить. Или мы пишем: здесь у нас шаблон "наблюдатель" а вот нам у нас singleton и всем сразу понятен общий смысл.

    С MVC пример не особо удачный. Дело в том, что сейчас существует довольно много разных штук на которые почему-то прилепили буковки MVC, хотя на самом деле... В целом понятно, что вы пишете о случае с "толстыми контроллерами" но ведь может быть несколько разных контроллеров которые работают с одной моделью.
    И могут быть разные модели, отдающие данные в одно и то-же представление. Но об этом ниже.

    И с полиморфизмом вы что-то напутали. Посмотрите хоть в википедии что это и зачем. Клиентов ведь может быть больше одного. Сегодня наш код работает на телефоне с ios, завтра на andoid'е, а послезавтра на голографическом телевизоре с пси-управлением. И данные он вчера брал из MSSQL а сегодня берет из mongodb. Но при этом у нас все круто спроектировано, и мы не меняем ядро приложения. Только подсовываем новые реализации интерфейсов по необходимости. Вот про что полиморфизм.
    Ответ написан
    1 комментарий
  • Как скомпилировать два исполняемых файла из одного проекта QtCreator?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Это называется "Архитектура приложения".
    Один из примеров - части приложения выносятся в разные репозитарии, затем они включаются в общий при помощи git subtree. Тогда у вас отпадает необходимость синхронизировать эти части руками - это все делает git

    Далее, у проекта qt есть подмодули, так вот ваши exe - это и есть два подмодуля в большом проекте.

    Дерзайте!
    Ответ написан
    Комментировать
  • Почему не переполняется float?

    maaGames
    @maaGames
    Погроммирую программы
    Магия плаващих точек :)
    Числа должны быть примерно одного порядка, иначе UB (с оговорками).
    3.4е38 + 1.0 = 3.4е38. Это равнозначно 3.4е38 + 0.0, потому что 1 по сравнению с 1е38 равно нулю.
    А при умножении различие будет уже в 7 знаке после запятой, которую float может обнаружить и сообщить о переполнении (+INF).
    Ответ написан
    2 комментария
  • Можно ли без сборки установить фреймворк для C++?

    Nipheris
    @Nipheris Куратор тега C++
    Не совсем понимаю почему SmInc так сильно завязался на сценарий заливки в VCS, если под заранее собранной может пониматься и выложенная например в releases на гитхабе.

    Есть ряд объективных проблем:
    • большое количество архитектур, под которые нужно выполнять сборку;
    • большое количество конфигураций сборки - в мире C++ приятно делать в библиотеках возможность compile-time конфигурирования - когда отдельные фичи могут менять своё поведение или отключаться в момент КОМПИЛЯЦИИ, а не работы библиотеки. Сюда же разлчиная степень оптимизации, debug/release-билды и так далее;
    • большое количество тулчейнов и операционных сред - Клэнг на FreeBSD, gcc на Линуксе, VC++ на Винде, Клэнг на Винде и так далее..

    Все вышеперечисленные факторы приводят к комбинаторному взрыву вариантов сборки. Поэтому некоторые проекты по получению некоего "пакетного менеджера" или "каталога библиотек" идут по пути дерева портов, например vcpkg. Тут всё просто - вы знаете какой конкретно сейчас вам нужен компилятор, какие ОС и т.д. - скрипт автоматизации сборки помогает вам собрать библиотеку. Это довольно продуктивный компромисс.
    Кроме того, не следует также отбрасывать вариант сборки заранее "для себя", которая вполне может прижиться в локальной среде для среднего и круного проекта. См. например репозитории ПМ Conan и реализацию от JFrog.

    Вообще в плюсах из-за зоопарка платформ и инструментов острейшим образом стоит проблема интеграции библиотек. В стеке C++ (если вообще можно такой обозначить) общим знаменателем является, пожалуй, только сам C++. Всё остальное зависит как от авторов библиотеки - с одной стороны, так и от вашей среды где вы собираетесь библиотеку запускать - с другой стороны. Так что привыкайте.
    Ответ написан
    Комментировать
  • Как сократить число в периоде?

    @Wexter
    1) Тип выбирайте double
    2) если уж делите числа то делите числа с точкой, а не целые

    double U = 3./180.;
    Ответ написан
    Комментировать
  • Как сократить число в периоде?

    0xD34F
    @0xD34F
    Ну так 3/180 - это вы целыми числами оперируете. Отсюда и 0 в результате. Попробуйте 3.0/180. Или 3/180.0.
    Ответ написан
    Комментировать