2011-09-22 3 views
0

문자열 배열의 요소를 문자열 배열의 다른 요소로 대체하려면 어떻게해야합니까? 이것은 내 프로그램의 마지막 부분이며 이해하지 못합니다 ... strcpy 또는 .replace 등을 사용하는 char를 알고 있습니다.BinarySearch - 문자열 요소를 발견 된 다른 문자열 요소로 바꾸기

"orginalWord"및 "replacementWord"가있는 구조체가 있습니다. "다음에"inputword "의 문자열 배열 인 inputword를 취하고 구조체 배열 (orginalWord와 비교)에서 찾은 다음 한 번 발견합니다 (해당 부분을 찾으면 ...). 올바른 요소 번호, 그래서 나는 정확한지 알고있다) "대체 단어"로 "입력 단어"를 바꿉니다. 나는 "입력 단어"내의 요소를 발견 한 "reaplcementWord"로 대체 할 수 없습니다. 도와주세요!! 독서를 쉽게하기 위해 나머지 코드에서 Binarysearch 함수를 별도로 게시 할 것입니다. 나는 이것이 단순해야한다는 것을 알고 있지만, 나는 내 삶을 기억할 수 없다.

예 : 검색 항목은 inputword [20] = "좋아요"입니다. Sruct Array ... encryption [50] .OrginalWord = "Like". Match found ... encryption [50] .ReplacementWord = "Ducks". 나는 "Ducks"를 inputword [20]에 넣고 싶습니다. BinarySearch를 사용하면 어떻게됩니까? searchitem 수정 될 것입니다 경우

//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 예? 일단 단어와 일치하는 것을 찾으면 검색 배열로 사용 된 문자열 배열의 요소를 바꾸기를 원합니다. 일치하는 부분을 찾은 문자열로. 희망은 그 말이 맞습니다. – Riotson

+0

나는 2 개의 문자열, "OriginalWord"및 "ReplacementWord"의 구조체 배열을가집니다. 그들 중 86 명이 있습니다. 그런 다음 약 200 개의 문자열 배열 "inputword"가 있습니다. "inputword"를 검색 항목으로 사용하여 "OriginalWord"와 비교하여 구조체 배열 내에서 검색합니다. 그러나 그것을 찾으면 해당 배열의 요소 번호를 가져 와서 "ReplacementWord"를 사용하여 "intputword"문자열 배열 내의 요소가 검색 항목으로 사용 된 새 문자열을 넣기를 원합니다. – Riotson

답변

1

, 당신은 참조를 전달해야

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

그랬어! 고맙습니다!! 그것은 지금 단어를 대체하고 있습니다 !! 단어의 80 % 만 대체 되었기 때문에 내가 어딘가에 잘못 갔음에 틀림 없다. 고맙습니다! :) – Riotson