2017-05-07 1 views
-2

알아볼 수없는 숙제 문제. 거짓말조차하지 않을거야. 내 함수가 찾고있는 문자를 찾거나 문자를 찾지 못하면 -1을 반환하는 배열 색인을 반환한다고 가정합니다. 대신 배열 요소에 저장된 값을 반환합니다. 즉 "This is my string"이라고 입력하면 8을 반환하지만 대신 109 (M의 ASCII 코드)를 반환합니다.배열 값이 아니라 배열 인덱스를 반환하고 싶습니다.

int search(const std::string &array, char character) { 
    for (int i = 0; i < array.length(); i++) { 
     if (i = character) { 
      return i; 
     } 
     return -1; 
    } 
} 

오늘은 숙제를 중단하고 있지만 조언을 해주시면 감사하겠습니다. 어쩌면 나는 신선한 눈으로 내일 문제를 보게 될 것이다.

+4

'(I = 문자)'-> '(I == 문자)'-> '(배열 [I] == 문자)' – DeiDei

+0

스포일러 : 또 다른 문제가있다. 계속 찾고;) – Quentin

답변

1
int search(const std::string &array, char character) { 
    for (int i = 0; i < array.length(); i++) { 
     if (i **==**character) { 
      return i; 
     } 
     return -1; 
    } 
} 

루프에서 i = 문자는 비교가 아니며 할당입니다. C++에서 비교 연산자는 ==입니다. 보조 노트에

, 당신은 내가 볼 실패 어떤 기능 find()

편집

하여 전체 기능을 대체 할 수 잘못하고 너무 귀하의 경우이다. 여기

코드의 작업 조각 :

#include<string> 
#include<iostream> 
int search(const std::string &array, char character) { 
    for (int i = 0; i < array.length(); i++) { 
     if (array[i] == character) { 
      return i; 
     } 

    } 
    return -1; 
} 

int main(){ 
std::string meh = "meh"; 
std::cout << search(meh,'e') << std::endl; 

} 

첫 번째 오류, 당신은 문자 배열이 아닌 카운터 (I)의 요소를 비교해야합니다. 두 번째 오류, 실패한 경우 -1을 반환합니다. 그러나 문자가 문자열의 첫 번째 문자가 아닌 경우 오류가 발생합니다.

감사합니다. 제 2면을 봐 주셔서 감사합니다.

+0

association 지정. 그러나 이것이이 코드의 문제점 중 하나 일뿐입니다. – Quentin

+0

감사합니다. 무리 ... 원래 두배의 평등을 가졌지 만 다른 것을 시도하는 동안 그것을 변경 했음에 틀림 없습니다. 배열 [i]는 나를 괴롭히는 큰 일이었습니다. 그래서 팁을 주셔서 감사합니다. 이것은 내가 알 수없는 숙제에 관한 유일한 질문이었습니다. 다시 한번 감사드립니다. 추신 나는 사람들이 내 명확하게 noobish 질문을 downvoted 때문에 그렇지 않으면 나는 가질 것이라고 응답을 upvote 수 없습니다. – Sean

0
#include <iostream> 
int search(const std::string &array, char character); 
int main() { 
const std::string string1 = "daidalos"; 
std::cout << search(string1, 'i'); 
return 0; 
} 
int search(const std::string &array, char character) { 
for (int i = 0; i < array.length(); i++) { 
    if (array[i] == character) { 
     return i+1; 
    } 
} 
return -1; 
} 

출력 : 당신은 문자열의 여러 인덱스, 당신이 사용할 수있는 반환 할 경우 3가, 3 위 (참) .However을 의미 std::pair 또는 std::tupple.

1

표준 : : 문자열 :: 발견은() 당신이 원하는 것을 정확히 반환

std::size_t search(const std::string& array, char character) 
{ 
    for(std::size_t i=0; i<array.size(); ++i) 
     if(array[i]==character) return i; 
    return -1; 
} 
+0

나는 그것을 사용하고 싶었지만 선생님은 나를 원하지 않았다. 배열/루프에 대한 더 많은 연습이 필요하기 때문에 짐작할 수 있습니다. – Sean

0

을 내가 찾던 Excatly 무엇 :

std::size_t search(const std::string& array, char character) 
{ 
    return array.find(character); // if 'character' is not found returns std::string::npos 
} 

그리고 당신은 그것을 사용하지 않으려면 .

#include<string> 
#include<iostream> 
int search(const std::string &array, char character) { 
    for (int i = 0; i < array.length(); i++) { 
     if (array[i] == character) { 
      return i; 
     } 

    } 
    return -1; 
}