Как сделать, чтобы бинарный поиск заменял элемент массива строк другим элементом массива строк? Это последняя часть моей программы, и я не понимаю ... Я знаю, что с 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;
}