2012-03-30 115 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'? – 2012-03-30 03:22:26

+0

你根本不使用'query'變量。我不這可能是你想要的...哦,你可能應該初始化'numMatches' ... – mcmcc 2012-03-30 03:23:42

+0

我如何「重新初始化」numMatches? – user1145538 2012-03-30 04:05:25

回答

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++技能。


祝你好運!