powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Переписать старое значение на новое при определенном пороге.
9 сообщений из 9, страница 1 из 1
Переписать старое значение на новое при определенном пороге.
    #39615228
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне приходят значения. Если новое значение отличается от старого значения на скажем 20% - я переписываю старое значение новым.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
void UpdateOnHisteresis( float  *old_val, float  *new_val, uint32_t histeresis)
{
	if ( (*old_val + *old_val*(histeresis/100)) >= *new_val ||
            (*old_val - *old_val*(histeresis/100)) <= *new_val)
         {
		   *old_val = *new_val;
         }
}


Но теперь у меня есть поля не только float но и int и я решил сделать генерик
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
void UpdateOnHisteresis(void *old_val, void *new_val, uint32_t histeresis)
{
	if ( (*old_val + *old_val*(histeresis/100)) >= *new_val ||
             (*old_val - *old_val*(histeresis/100)) <= *new_val)
         {
		    *old_val = *new_val;
         }
}


но компилятор ругается - expression must be a modifiable lvalue.
Не соображу как правильно сделать кастинг.
...
Рейтинг: 0 / 0
Переписать старое значение на новое при определенном пороге.
    #39615237
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Void нельзя умножать. Нужен кастинг к алгебре

И весь приведённый код скорее не генерик.
...
Рейтинг: 0 / 0
Переписать старое значение на новое при определенном пороге.
    #39615242
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonVoid нельзя умножать. Нужен кастинг к алгебре

И весь приведённый код скорее не генерик.
в этом и вопрос - как сделать кастинг. то что нужен кастинг я как то понял.
...
Рейтинг: 0 / 0
Переписать старое значение на новое при определенном пороге.
    #39615369
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делай шаблон функции по всем правилам C++.
...
Рейтинг: 0 / 0
Переписать старое значение на новое при определенном пороге.
    #39615373
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДелай шаблон функции по всем правилам C++.
у меня не С++. у меня С.
...
Рейтинг: 0 / 0
Переписать старое значение на новое при определенном пороге.
    #39615378
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7maytonДелай шаблон функции по всем правилам C++.
у меня не С++. у меня С.
Тогда делай две функции.

Можно препроцессором попробовать
Код: plaintext
1.
#define UpdateOnHisteresis ...
...
Рейтинг: 0 / 0
Переписать старое значение на новое при определенном пороге.
    #39615379
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7и я решил сделать генерик

jenya7у меня не С++. у меня С.

Что такое "генерик" ?

IMHO В C можно макрос через #define сделать
...
Рейтинг: 0 / 0
Переписать старое значение на новое при определенном пороге.
    #39615381
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7Но теперь у меня есть поля не только float но и int и я решил сделать генерикЕсли у вас "це без крестов", то делайте (разноимённые) функции на все комбинации типов или закладывайте в вашу структуру индикатор типа, чтобы организовать закат солнца вручную.
...
Рейтинг: 0 / 0
Переписать старое значение на новое при определенном пороге.
    #39615402
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
понял. спасибо.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Переписать старое значение на новое при определенном пороге.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]