#c #arrays #loops #if-statement
Вопрос:
int main()
{
cout << "Enter the number whose index no. you want to find " << endl;
cin >> a;
for (int i = 0; i < n; i )
{
if (numbers[i] == a)
{
cout << "Its index no. is " << i << endl;
break;
}
if (i == n - 1)
{
cout << "No. not found in Array" << endl;
}
}
return 0;
}
Какая польза от if(i==n-1)
этого в этом? Как он функционирует? Пожалуйста, помогите!
Комментарии:
1. n — 1-это последний допустимый индекс в массиве. Поскольку я только что проверил в верхней части цикла, если это последний индекс (n-1), то он выводит сообщение «Не найден».
2. Насколько я видел, этот код не является особенно распространенным способом сделать это в первую очередь. Обычно вы вызываете функцию, чтобы найти элемент , который вы ищете (например
std::find
,indexOf
на некоторых языках), иif
будет проведена простая проверка возвращаемого значения этой функции.3. Другим способом было бы просто изменить значение
break
на areturn
, а затем переместитьnot found
сообщение послеfor
цикла, например:for (int i = 0; i < n; i ) { if (numbers[i] == a) { cout << "Its index no. is " << i << endl; return 0; } } cout << "No. not found in Array" << endl;
Ответ №1:
Поскольку ваш цикл будет идти от 0 до n-1, и если значение также отсутствует в последнем элементе, то код печатает сообщение.
Ответ №2:
Этот цикл:
for (int i = 0; i < n; i )
{
if (numbers[i] == a)
{
cout << "Its index no. is " << i << endl;
break;
}
if (i == n - 1)
{
cout << "No. not found in Array" << endl;
}
}
это просто плохой код, который может запутать читателей.
Его можно было бы переписать следующим образом:
int i = 0;
while ( i < n amp;amp; numbers[i] != a ) i ;
if ( i != n )
{
cout << "Its index no. is " << i << endl;
}
else
{
cout << "No. not found in Array" << endl;
}
То есть, если число найдено в массиве, то есть если условие numbers[i] != a
оценивается как ложное, это означает, что целевое число находится в позиции i. В противном случае будут проверены все элементы массива, и в этом случае я буду равен n, потому что допустимый диапазон индексов равен [0, n - 1)
.
В исходном цикле, если целевой номер найден в цикле for, выводится соответствующее сообщение, и элемент управления выходит из цикла из-за оператора break. В противном случае, если это последний элемент массива (то есть с индексом n - 1
), и он не равен целевому номеру, это означает, что в массиве больше нет элементов для сравнения. Эта итерация, когда i равно n — 1, является последней итерацией, поэтому элемент в массиве, равный переменной a, не найден.