2012-03-30 3 views
1

어떻게해야하는지 알 수 없습니다.배열에 일치하는 개수가 있습니다.

질문 : 함수

int count_matches(const string arr[], int size, string query); 

복귀 query -1 또는 동등한 배열 문자열의 개수를 구현하는 경우에는 크기가 0보다 적은 경우

내 대답 :

#include <iostream> 
#include <cmath> 
#include<string> 

using namespace std; 

int count_matches(const string arr[], int size, string query){ 

    int i = 0; 
    int numMatches; 

    for (;i<size;i++) { 

    if (string[i] == (string[i]+1)){ 
     numMatches++; 
    } 

    } 

    return numMatches; 

} 


int main(){ 

    string selection; 

    const string array[4]={"dog", "cat", "dog", "dog"}; 

    cout<<"which animal do you want?"<<endl; 
    cin>> selection; 

    cout<< "there are " << count_matches(array, 4, selection)<< " matches"<<endl; 

    return 0; 
} 

무엇이 잘못 되었나요?

+1

배열 이름은'arr'입니다. 그래서'string [i]'는 무엇입니까? 또한'string [i] + 1'을보고'int numMatches;'가 초기화되지 않았기 때문에 그 일을 생각해보십시오.'numMatches ++;'는 무엇을 할 것이라고 생각합니까? 그리고'query'는 어디에서 사용합니까? –

+0

당신은'query' 변수를 전혀 사용하지 않습니다. 나는 아마 당신이 의도 한 것 ... 오, 당신은 아마'numMatches'를 초기화해야합니다 ... – mcmcc

+0

어떻게 numMatches를 "재 초기화"합니까? – user1145538

답변

1
int count_matches(const string arr[], int size, string query){ 

    int numMatches(0); 

    for (int i=0; i<size; ++i) 
    { 
    if (arr[i] == string) 
    { 
     ++numMatches; 
    } 
    } 

    return numMatches; 
} 

이것은 문제의 해결책이되어야하지만이 방법으로는 얻지 못합니다. 다음 번에 문제를 해결하는 방법을 더 잘 이해하기 위해이 tutorial on arrays and loops을 읽는 것이 좋습니다. 당신은 당신의 코드를 컴파일 일단

1

,이 블록을주의 깊게 볼 필요가 :

if (string[i] == (string[i]+1)) { 
    numMatches++; 
} 

는 당신이 실제로 여기에 비교 하시겠습니까? string유형입니다. 함수에 전달한 인수를 자세히 살펴보면 분명히 알 수 있습니다.

그런 다음 일치가 발생하면 numMatches이 증가합니다. 그러나 이것이 어떤 가치가 있는가? 의 가치는이어야합니다. std::count()count_matches() 기능을 수행해야 정확히한다는 것을


참고 :

std::count(array, array + 4, selection) 

이 아마 누구에게나 마크 숙제를 statisfy하지 않습니다,하지만 당신은 당신의 발전을 원한다면이 함께 연주 및 학습 가치가있다 C++ 기술.


행운을 빈다!

관련 문제