2012-03-30 11 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++のスキル。


幸運!

関連する問題