2012-03-30 118 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++技能。


祝你好运!