Помогите с кодом

Тема в разделе "Arduino & Shields", создана пользователем adel, 25 ноя 2022.

Метки:
  1. adel

    adel Нуб

    Кто нибудь может помочь как сравнивать показания с погрешностью из переменнойи если показания новые то перезаписывать на старые и выполнять какой-то блок?
    По типо такого или легче, но что бы можно было использовать погрешность.
    Программа должна делать так
    В примере беру погрешность 0.1
    Новая информация | старая | ответ стстемы
    9.8 | 10 | изменить
    9.9 | 10 | оставить
    10.1 | 10 | оставить
    10.2 | 12 | изменить
    Код (C++):
    Int data = 10:
    int x =.0.1; // погрешность
    int data_new = 11;
    if(data != data_new) {
    data = data_new
    // какой-то блок
    }
     
  2. b707

    b707 Гуру

    Код (C++):
    int data = 10:
    float x =0.1; // погрешность
    int data_new = 11;
    if(abs(data - data_new) > x) {   // изменить
    data = data_new
    // какой-то блок
    }

    только похоже вы язык С не знаете совсем, "Int" или "int" - вам все равно, float от целых не отличаете...
    Нате вам код, все равно не сдадите.
     
    Andy16, adel и Airbus нравится это.
  3. adel

    adel Нуб

    Просто случайно заглавной сделал. А int я взял как для примера.
     
  4. adel

    adel Нуб

    Спасибо что помогли.
     
  5. Код (C++):
    abs(data - data_new) > x
    А какой смысл сравнивать 0, 1, 2, ... c 0.1?
     
  6. Airbus

    Airbus Радиохулиган Модератор

    0.1 это погрешность. Сравниваются совсем другие числа
     
  7. DetSimen

    DetSimen Гуру

    С твоим кодом - точно не здаст. :)
     
    parovoZZ нравится это.
  8. parovoZZ

    parovoZZ Гуру

    А какую погрешность вычислять? Точно нужна абсолютная?
     
  9. parovoZZ

    parovoZZ Гуру

    в этой строчке компилятор что к чему приведёт: int к float или float к int?
     
    Рокки1945 нравится это.
  10. b707

    b707 Гуру

    а где я накосячил? - что-то не вижу
     
  11. DetSimen

    DetSimen Гуру

    у тебя 2 int-а вычитаются и сравниваются с 0.1. разность двух int будет считаться с дискретностью 1. Для 0.1 надо всё в float переводить
     
    Рокки1945 и b707 нравится это.
  12. b707

    b707 Гуру

    нечестный Си... все через это место :)
     
    DetSimen нравится это.
  13. parovoZZ

    parovoZZ Гуру

    согласен. Си не самый честный язык. Вот ассемблер....