Я пытаюсь создать функцию, которая имеет цикл, который проверяет каждый член массива, сделанный из булевых переменных, и завершает работу, когда находит первое «истинное» значение.Поиск первого указанного элемента в массиве
Вот что я сейчас:
bool solids[50];
int a,i;
//"equality" is a function that checks the equality between "a" and a defined value
solids[0] = equality(a,&value_1);
solids[1] = equality(a,&value_1);
solids[2] = equality(a,&value_1);
solids[3] = equality(a,&value_1);
for (i = 0; solids[i] != true; i++)
{
[...]
}
Но я понятия не имею, что я должен поместить в петлю?
Моя попытка была
for (i = 0; i <= 50; i++)
{
if (solids[i] == true)
{
return true;
break;
} else {
return false;
}
}
, который должен вернуться true
после первого верен и вернуть false
если массив не имеет элемент с true
значение, но это не похоже на работу в коде.
Неправильно? Если да, в чем проблема?
PS .: Я могу посчитать количество true
с счетчиком, но это не является оптимальным решением этой проблемы, так как я просто смотрю на ПЕРВЫЙ true
значения и, следовательно, программа не должен проверять все 50 членов. Needley рассчитывать, сколько ненужных шагов это должно было бы означать.
Просто используйте 'std :: find'. – chris
Вам не нужна часть 'else'. Подумайте об этом - он возвращает 'false' для первого недействительного значения, чтобы он прекратил поиск. –
Вы намерены установить каждый элемент твердых тел [] на одно и то же значение? Вы всегда сравниваете 'a' с' value_1' – Tawnos