2011-09-22 64 views
0

如何進行二進制搜索用字符串數組的另一個元素替換字符串數組的元素?這是我的程序的最後一部分,我不明白...我知道用char的你使用strcpy或.replace等。BinarySearch - 用另一個字符串元素替換字符串元素一旦找到

我有一個結構有一個「orginalWord」和「replacementWord 「,然後是一個」inputword「字符串數組,它接受輸入字,在struct數組中找到它(與orginalWord比較),並且一旦找到它(它找到它......該部分工作,它找到正確的元素號,所以我知道搜索是正確的)用「替換字」代替「輸入字」。我不能用它找到的「reaplcementWord」替換「輸入字詞」中的元素。請幫助!!我將從我的其他代碼中單獨發佈Binarysearch函數,以便於閱讀。我知道這應該很簡單,但我不記得我的生活。

示例:所以... searchitem是inputword [20] =「Like」。 Sruct Array ...加密[50] .OrginalWord =「贊」。找到匹配...加密[50] .ReplacementWord =「鴨子」。我想將「鴨子」放入輸入字[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; 
} 
+0

你試圖讓這個searchitem在調用者修改? –

+0

@VaughnCato是嗎?一旦找到匹配的單詞,我希望它替換字符串數組中的元素,該元素被用作searchitem。用它找到匹配的字符串。希望這是有道理的。 – Riotson

+0

我有一個2個字符串的結構數組,「OriginalWord」和「ReplacementWord」。其中有86個。然後我有一個大約200的字符串數組「輸入字」。我使用「輸入字」作爲searchitem,在結構數組中搜索與它找到的「OriginalWord」相比較。但一旦找到它,我希望它在該數組中使用該元素號,並使用「ReplacementWord」並放入新字符串,其中「intputword」字符串數組內的元素被用作搜索項。 – Riotson

回答

1

如果searchitem將被修改,則需要按引用傳遞它:

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

這樣做!謝謝!!它現在取代了單詞!似乎我一定是在其他地方出了問題,因爲只有80%的單詞正在被替換,但它的工作原理!謝謝! :) – Riotson

相關問題