0
Я хочу в качестве примера убедиться, что значения 2/3 находятся в заданном пороге. Следующий код выполняет это, но мне интересно, существует ли более общий подход.C++ Комбинаторная проверка того, что подмножество условий встречается
struct foo {
int id;
float item1;
float item2;
float item3;
}
bool ConditionCheck(foo val1, foo val2, foo val3) {
int count = 0;
if (abs(val1.item1 - val2.item1) < val3.item1) {
count++;
}
if (abs(val1.item2 - val2.item2) < val3.item2) {
count++;
}
if (abs(val1.item3 - val2.item3) < val3.item3) {
count++;
}
if (count >= 2) {
return true;
}
return false;
}
Проблема стебли для пользовательских структур еще, имеющие параметры как массивы:
// assuming array holds: [id, item1, item2, item3]
bool ConditionCheck(float (&val1)[4], float (&val2)[4], float(&threshold)[4]) {
int count = 0;
for (unsigned int i = 1; i < 4; ++i) {
if (abs(val1[i] - val2[i]) < threshold[i]) {
count++;
}
}
if (count >= 2) {
return true;
}
return false;
}
Ну, например вы можете просто do 'return count> = 2', нет необходимости в' if'. – aruisdante
Что вы хотите сделать более общим? количество баллов? состояние? вы можете начать инкапсулировать свою функцию if в функцию и перебрать свои вещи. – Alex