我无法弄清楚如何做到这一点。
问题:实施功能
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;
}
有什么问题?
答案 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 ++技能,那么值得玩和学习。