массивы — C ++ Линейный поиск, возвращающий только 0

Так что я новичок в C ++, я пишу код в JS, по какой-то причине я не могу понять ошибку здесь, пожалуйста, помогите мне. Спасибо!

#include <iostream>

using namespace std;

int search(char input, char sentence[]){
for(int i = 2; i != '\0'; i++){
if(sentence[i] == input){
return i;

}else{ return -1; }
}
}

int main()
{
char key[20] = "hey my name is sid!";
char ser = 'm';
cout << search(ser,key);
return 0;
}

-5

Решение

Ваше условие в цикле for неверное, вы не проверяете строку только на индекс. Также, если ваш персонаж не совпадает, вы не хотите выходить немедленно.

Правильный код будет:

for(int i = 0; sentence[i] != '\0'; i++)
{
if(sentence[i] == input)
{
return i;
}
}
return -1;

Если вы хотите начать поиск с третьего символа, сначала убедитесь, что ваша строка содержит как минимум три элемента:

if(strlen(sentence)>=3)
{
for(int i = 2; sentence[i] != '\0'; i++)
{
...
}
...
}
3

Другие решения

Для вашей функции поиска вы действительно проверяете только первый символ в цикле, а затем возвращаетесь. Вы должны переместить «возврат -1;» вне цикла for, так как он будет вызываться только после того, как вся строка будет проверена на значение и не найдена.

int search(char input, char sentence[]) {
for (int i = 2; sentence[i] != '\0'; i++) {
if (sentence[i] == input) {
return i;
}
}
return -1;
}

в дополнение к изменению условий цикла for, как упоминали другие пользователи.

3

По вопросам рекламы [email protected]