• Почему неправильно считает Коэффициенты регрессии?

    @res2001
    Борис Стасев, Добавьте в код дополнительный отладочный вывод промежуточных результатов и смотрите на каком этапе выводимые данные начинают не сходится с вручную рассчитанным результатом.
    Для простоты можно сократить входной файл и т.п.
    Можно разбить задачу на части и отлаживать каждую часть, как отдельную задачу, добиваясь правильного результата для каждой отдельной части. И т.д и т.п.

    Отладочный вывод потом удалите, когда все отладите.

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

    Чтоб избавиться от вероятных ошибок связанных с использованием типа float, перейдите на тип double. У float очень низкая точность, всего 6-7 значащих десятичных цифр. Из-за этого при интенсивных расчетах с float могут быть не корректные результаты.
    Отладитесь с double, перейдете обратно на float (если float вам принципиален) и посмотрите, как изменится результат. С некоторыми ошибками точности можно попробовать побороться, но далеко не со всеми. Это специфика типов с плавающей точкой. У double то же есть свои ограничения по точности (15-17 значащих десятичных цифр), но они гораздо больше, чем у float и обычно точности double хватает.
  • Какой структурой можно повесить lock на диапазон?

    @res2001
    Как вариант - блокировать каждый пакет из диапазона
    Написано
  • Как вывести изображение с прозрачным фоном WinApi c++?

    @res2001
    Точного ответа не знаю. Но могу предположить, что голая винда, возможно, умеет только в BMP. Поддержка разных форматов изображений - это не задача ОС. Так же как и звука/видео и т.п.
    Все остальное может быть использовано через дополнительные преобразования.
    Ищите подходящие библиотеки для работы с изображениями. Можно начать с libpng. Можно поискать что-то более универсальное с поддержкой разных форматов, если вам это может понадобится в дальнейшем.
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @res2001
    Danilka2400,
    реально?

    strtol и atoi делают одно и то же.
    Только atoi старый вариант с лохматых времен и она ничего не знает про системы счисления - для нее входной параметр всегда в десятичной системе.
    strtol - умеет в системы счисления, и не только в стандартные, вплоть до 36. Видел один раз использование 36ричной системы счисления в жизни :) позволяет сильно ужимать числа по сравнению с десятичной в текстовом представлении.
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @res2001
    Danilka2400,
    с делал вот так

    Блин. Дак у вас на входе десятичные цифры, записанные в строке. Вам достаточно было в первоначальном варианте сделать strtol(asciiHex, NULL, 0);
    Я думал, что на входе шестнадцатиричные, т.к. и вы использовали систему счисления 16 в strtol. Да и вопрос задан соответствующим образом.
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @res2001
    Danilka2400,
    А ещё один момент, когда я вывожу на экран в формате допусти "%X" он же не меняет сам себя, а только нам отображать да?

    Если выводите через printf, то исходная переменная (decValue) никак не меняется, шестнацатиричные цифры будут только на экране.
    Если используете snprintf для формирования буфера, то после выполнения snprintf в буфере будет содержаться строка с шестнацатиричными цифрами. Ее потом можно вывести просто как строку printf("%s\n", asciiHex);
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @res2001
    Danilka2400,
    не переводить из HEX ASCII в DEC, а потом обратно, а сразу на его уровне прибавить

    Можно. Но, пожалуй, с конвертацией это будет гораздо проще сделать.

    Если отладчик не запускается, то используйте отладочный вывод я же уже писал. Это такой ручной способ отладки, его не всегда можно применять (как и сам отладчик), но в вашем случае вполне можно.

    Вот набросал ваш пример в готболте: https://gcc.godbolt.org/z/qKncjfPac
    Работает.
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @res2001
    Danilka2400,
    в Serial2.available() я проверяю всё что мне приходит

    Ок
    вчера работала ,сегодня нет

    Попробуйте удалить все артефакты сборки, т.е. объектные файлы, исполняемый файл (прошивку или что там у вас в ардуинке) и т.п. (в IDE это обычно можно сделать через меню, что-нибудь типа Clear Project) и пересобрать весь проект с нуля.
    Ваш код пробую пишет 2А в первую ячейку, голова кругом

    Добавьте отладочного вывода на промежуточных этапах, чтоб проверить состояния промежуточных переменных и т.п. Или используйте для этого отладчик.
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @res2001
    Danilka2400, После read явно не хватает проверок полученных данных на корректность по требованиям протокола. Вдруг вам там пургу гонят или например вы прочитали пакет не до конца и т.п. Прочитать только часть пакета из последовательного порта (да и не только) можно легко, это вообще обычное поведение всех коммуникационных вызовов.

    Запустите под отладчиком да посмотрите по шагам где тут косяк.
    Или просто выводите в лог (на экран или куда можете) промежуточные значения.
    При входных данных "95" в asciiHex должно содержаться {'9', '5', 0}

    В целом ваш код выглядит правильно, но много лишних телодвижений на мой взгляд. Возможно вам это для чего-то надо, не знаю.
    Правда осталось не ясно как определен kolchislo. И вы продолжаете использовать VLA в buffff. VLA - это зло. Подумайте как уйти от этого.
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @res2001
    Danilka2400, Какого массива? На каком этапе? Вы постоянно не договариваете и не приводите ваш код в котором ошибка. На эти вопросы нельзя ответить.
    Код можно приводить тут или публиковать где-нибудь на https://gcc.godbolt.org/ или на том же github.
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @res2001
    Danilka2400, 31 и 39 - это шестнадцатиричный код символов '1' и '9'
    https://www.asciitable.com/

    После преобразования строки "\x31\x39" в число вы получите decValue==25==0x19
    В decValue вообще хранится число в двоичном виде (не в десятичном и не в шестнадцатиричном).
    Как сделать так, чтобы он не 25, а сразу 19 писал?

    Serial.printf("%X\n", decValue);
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @res2001
    byte kolchislo[]={0x00,0x00,0x00,0x00,0x00};
    razmer=1;// может и 2 и 3 быть, от этого завесить дальнейший размер
    char asciiHex[sizeof(kolchislo) + 1];
    for(int i = 0;i<razmer;i++){
                asciiHex[i]=kolchislo[i];
              }
    asciiHex[razmer] = 0;
    int decValue = strtol(asciiHex, NULL, 16);
    decValue++;
    Serial.printf("%X\n", decValue);
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @res2001
    Danilka2400,
    1. char asciiHex[razmer];
    Это массив переменной длинны (VLA). Не советую его использовать вообще никогда.
    Лучше сделайте, например так:
    char asciiHex[sizeof(kolchislo)];
    2. Как я писал в ответе strtol ждет от вас в параметре строку (null terminated string). У вас даже и не пахнет в asciiHex null terminated - это выход за пределы выделенной памяти и UB. Чтоб asciiHex сделать null terminated надо:
    - сделать asciiHex на 1 байт больше
    - записать после всех данных 0: asciiHex[razmer] = 0;
    3. Обратное преобразование вы делаете 2 раза: в sprintf и в Serial.printf. На выходе явно получите не правильный результат. Достаточно такого варианта: Serial.printf("%X\n", decValue);
    Без цикла и без промежуточного массива.
    Написано
  • Как конвертировать из DEC в HEX ASCII?

    @res2001
    Danilka2400, Кто кого превратил? Не понятно. Давайте пример кода.
    Написано
  • Почему GCC не видит встроенную атомарную операцию?

    @res2001
    Не хочу возиться со всякими dummy узлами

    Имеете ввиду алгоритм очереди Майкла&Скотта?
    Там не для красоты используется фиктивный узел в очереди.
    Без фиктивного узла вам нужно будет атомарно изменять 2 указателя (node->next и home/end). Правда, у вас пока еще указателя end нет, но он появится вскоре, я думаю.

    Еще немного, раз уж вы не используете функции из стандартной библиотеки, тогда не мешало бы определять все указатели, участвующие в атомарных операциях как volatile. И про выравнивание атомарных переменных то же не забывайте.
    Написано
  • Почему GCC не видит встроенную атомарную операцию?

    @res2001
    Сергей Соловьев,
    Во-вторых, я использую C

    Я дал ссылку на Сишный вариант.
    В отношении атомиков стандартный функционал С++ и С идентичен, начиная с версии 11 обоих ЯП
    В С++ правда еще можно в классы, но это можно рассматривать как надстройку над атомарными функциями.
    Написано
  • Как оптимизировать код с++ с рекурсией в времени?

    @res2001
    Используйте std::div для вычисления остатка и частного одновременно.
    Написано
  • Как подключить библиотеку TgBot к срр проекту?

    @res2001
    Тимофей, Т.к. вы используете vcpkg, то оптимально было бы добавить путь в PATH к каталогу vcpkg/.../bin. Тогда у вас автоматически все библиотеки предоставляемые vcpkg станут доступны.
    Так же не забудьте, что при переносе приложения на другой комп (или изготовлении инсталятора) надо будет тащить с собой и dll (lib не нужен). Тут так же надо будет решать куда положить dll: можно рядом с exe, можно в c:\windows\system32
    Написано
  • Как составить план по изучению языка C++?

    @res2001
    во всех книгах план примерно такой

    Это не план, это оглавление
    тип string является вовсе не типом, а классом

    Классы - это и есть типы. Только это не встроенные типы, а типы определяемые пользователем. В случае с std::string - это тип определяемый стандартной библиотекой, но это не принципиально.
    Кроме классов есть еще структуры, это по сути одно и то же, кроме небольших различий.
    ввод/вывод в консольном приложении осуществляется через объекты cin и cout

    И что? У вас с этим проблемы? Можете использовать и std::printf, но это не "С++ style" :)

    Как тут уже все не однократно писали - больше практики. Делайте задания из книг, придумайте свой проект и пытайтесь его реализовать.
    Написано