Ответы пользователя по тегу 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 зависать, то лучше не глотать целиком материал, а делать заметки, что где и как найти, если приспичит, написать еще какой-нибудь софт.
    В голову все не положишь. Жизнь коротка. И тд.
    Ответ написан
    Комментировать