Ответы пользователя по тегу C++
  • Как создать платную лицензию для программы на C++?

    @alexalexes
    1. Пользователь вводит ключ.
    2. Программа отправляет ключ на ваш сервер вместе с фингерпринтом железа.
    3. При первом запросе ваш сервер вписывает фингерпринт железа в профиль ключа и дату истечения действия ключа.
    4. Если дата не истекла и фингерпринт не менялся по ключевым характеристикам (например, модель и серийник материнской платы), то отправляем программе ответ, что пользователь может использовать полный функционал.
    Если дата истекла или существенно поменялся фингерпринт, то отправляем сообщение об ошибке.
    5. Оборачиваем сообщения в асимметричное шифрование. Применяем протоколы ЭЦП - по вкусу.
    Ответ написан
    2 комментария
  • Программирование плат Arduino, какой язык лучше использовать?

    @alexalexes
    Нурмагомед Лабазанов, вы не можете просто так написать программу C++ для железки.
    Практически любая строчка такой проги - это обращение к регистрам или портам конкретной модели или линейки контроллеров.
    А еще перед основным телом проги - конфигурационные константы - какие константы за какие порты отвечают.
    Так что, берите какую-нибудь arduino железку, например, Arduino nano, и экспериментируйте. Почувствуйте разницу с обычным C++.
    Ответ написан
    Комментировать
  • Является ли код правильным?

    @alexalexes
    (x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)) == 0

    Пока переменные - целые числа. Данное выражение может сработать на истину.
    Но если захотите вещественные числа применять, то придется ввести константу или переменную для сглаживания погрешности работы с числами с плавающей запятой.
    abs(x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)) <= eps

    eps - это макс. значение ошибки, при работе с числами с плавающей запятой. Очень сильно будет зависеть, в каких масштабах будут остальные переменные. Если единицы - то eps будет 0,001, если другие переменные сотни и тысячи, то эпсилон будет 0,1 (для примера привел числа, чтобы понимать масштаб).
    Ответ написан
    Комментировать
  • Как организовать работу N com-портов одновременно?

    @alexalexes
    // Форма окна
        Ui::MainWindow *m_ui;
    
        // Флаг ожидания ответа
        bool m_waitAnswer;
    
        // Открываемый com-порт
        QSerialPort *m_comPort;
    
        // Приемный буфер
        QByteArray m_bufferRead;
    
        // Таймер
        QTimer *m_timerWaitAnswer;

    Эти свойства у вас отвечают за контекст одного конкретного порта.
    1. Нужно описать элемент-структуру по этим свойствам - тем самым опишите контекст порта.
    2. Сделать массив из этих элементов - массив контекстов портов.
    3. В каждом методе работы с портом обеспечить передачу входного параметра, чтобы указывать, какой i-ый элемент структуры использовать (какой контекст порта - конкретный порт), чтобы что-то делать с параметрами конкретного порта.
    Ответ написан
    4 комментария
  • Как правильно округлять числа меньше нуля?

    @alexalexes
    Выводить с заданной точностью:
    printf("%.1f", c);
    Ответ написан
  • Как открыть и закрыть DVD-RW дисковод?

    @alexalexes
    Нужно привязываться к устройству не только по его типу, но и по букве диска.
    Открытие:
    mciSendString("open f: type cdaudio alias cd", NULL, 0, NULL);
    mciSendString("set cd door open wait", NULL, 0, NULL);

    Закрытие:
    mciSendString("open f: type cdaudio alias cd", NULL, 0, NULL);
    mciSendString("set cd door closed wait", NULL, 0, NULL);
    Ответ написан
    6 комментариев
  • Проверка TextBox на числа?

    @alexalexes
    В студенческие годы оборачивал в try catch:
    a = Convert::ToInt32(S1);
    Если конвертер обваливается - то было не число, прокатило преобразование - значит число.
    Для учебных нужд хватало с головой.
    Ответ написан
    Комментировать
  • Стоит ли полностью изучать материал, если он не нужен?

    @alexalexes
    Если вы взялись писать только одну прогу, затрагивающую данный материал, то все что-то вам не по теме будет вредно.
    Если на регулярной основе будете в WinAPI зависать, то лучше не глотать целиком материал, а делать заметки, что где и как найти, если приспичит, написать еще какой-нибудь софт.
    В голову все не положишь. Жизнь коротка. И тд.
    Ответ написан
    Комментировать