BinarySearch - 找到后用另一个字符串元素替换字符串元素

时间:2011-09-22 04:27:40

标签: arrays string struct binary-search

如何使二进制搜索用字符串数组的另一个元素替换字符串数组的元素?这是我的程序的最后一部分,我不明白...我知道你使用strcpy,或.replace等的char。

我有一个带有“orginalWord”和“replacementWord”的结构,然后是一个“inputword”的字符串数组,它接受输入字,在struct数组中找到它(与orginalWord相比),并且找到了(它确实发现了......那个部分有效,它找到了正确的元素编号,所以我知道搜索是正确的)用“替换字”替换“输入字”。我只是不能用它找到的“reaplcementWord”替换“inputword”中的元素。请帮忙!!我会从我的其余代码中单独发布Binarysearch函数,以便于阅读。我知道这应该很简单,但我不记得我的生活。

示例:所以... searchitem是inputword [20] =“Like”。 Sruct Array ... encryption [50] .OrginalWord =“Like”。匹配找到...加密[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 个答案:

答案 0 :(得分:1)

如果要修改searchitem,您需要通过引用传递它:

int BinarySearch (StringPair correctword[], int size, string &searchitem)