BinarySearch - заменить строковый элемент другим строковым элементом, найденным - PullRequest
0 голосов
/ 22 сентября 2011

Как сделать, чтобы бинарный поиск заменял элемент массива строк другим элементом массива строк? Это последняя часть моей программы, и я не понимаю ... Я знаю, что с char вы используете strcpy или .replace и т. Д.

У меня есть структура, в которой есть «orginalWord» и «replaceWord», затем строковый массив «inputword», он берет inputword, находит его в массиве struct (по сравнению с orginalWord) и один найдено (что он действительно находит ... эта часть работает, он находит правильный номер элемента, так что я знаю, что поиск правильный) заменяет "inputword" на "replaceword". Я просто не могу заставить его заменить элемент внутри «inputword» на «reaplcementWord», который он находит. Помогите, пожалуйста!! Я опубликую функцию Binarysearch отдельно от остальной части моего кода для удобства чтения. Я знаю, что это должно быть просто, но я не могу вспомнить на всю жизнь.

Пример: Итак ... searchitem is inputword [20] = "Like". Sruct Array ... encryption [50] .OrginalWord = "Like". Совпадение найдено ... encryption [50] .ReplacementWord = "Утки". Я хотел бы добавить «Ducks» во входное слово [20]. Как бы я сделал это с помощью BinarySearch?

//Function call within main:
for(number=0; number < plaincount; number++)
        { BinarySearch(encryption, count, inputword[number]);
         } 

int BinarySearch (StringPair correctword[], int size, string searchitem)
{   
    int middle =0, start = 0, last = size-1;
    bool found = false;
    int position = -1;
    while (!found && start <= last)
    { 
        middle = (start + last)/2; // Midpoint // Was a breakpoint here, why?
        if(correctword[middle].orginalWord == searchitem)
        {               
            position = middle;
            cout << "Replacing word: " << searchitem << " With: " << position << endl;

            searchitem.swap(correctword[position].replacementWord);

            found = true;
            return position; // Return new value for inputword array?
        }
        else if (correctword[middle].orginalWord < searchitem)
            { start = middle+1; }
        else last = middle-1;
    }
    cout << "Misspelled word found: " << searchitem << endl;
    return false;
}

1 Ответ

1 голос
/ 22 сентября 2011

Если searchitem будет изменен, вам нужно передать его по ссылке:

int BinarySearch (StringPair correctword[], int size, string &searchitem)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...