计算数组中的匹配项

时间:2012-03-30 03:16:54

标签: c++ debugging matching

我无法弄清楚如何做到这一点。

问题:实施功能

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

返回数组中等于query或的字符串数 如果大小小于0,则-1

我的回答:

#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;
}

有什么问题?

2 个答案:

答案 0 :(得分: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 :(得分:1)

一旦你的代码被编译,你需要仔细查看这个块:

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

你真的想在这里比较什么? string类型。再看一下你传递给函数的参数,这些参数应该清楚。

然后,一旦匹配,就增加numMatches。但这有什么价值呢? 它必须以什么值开头?


请注意,std::count()完全符合您的count_matches()功能:

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

这可能不会影响任何标记你的作业的人,但如果你想提高你的C ++技能,那么值得玩和学习。


祝你好运!