【发布时间】:2012-06-19 09:58:26
【问题描述】:
这是一项小组作业,我们的教授将项目延长了 1 周,这变得相当困难。有 50 个阶段/测试,我们只能达到第 11 阶段,然后功能失败。
这个函数在我们的 .cpp 文件中(我们肯定是这个函数导致了问题,因为当我们改变它的一部分时,它会影响我们已经通过的第 11 阶段)。
int segment::match(const char word[]) {
int i;
cout << data[0];
data[0] == "OOP";
cout << data[0];
for(i=0;i<NUM_MAX;i++) {
cout << "word = " << &word[i] << " data[i] = " << data[i];
if(strstr(&word[i],data[i])!= NULL)
break;
}
return i==NUM_MAX ? 1 : i-1;
从 main.cpp(作为作业提供给我们)这就是我们想要完成的目标
通过了测试 11...
Your match( ) return value ----> -1
Actual match( ) return value --> -1
Press the ENTER key to continue...
word = OOP data[i] =
Failed while testing the match( )
function... Failed on test 12...
Your match( ) return value ----> -1
Actual match( ) return value --> 1
Press the ENTER key to continue...
You passed 11/50 tests...
Your program is 22.00% complete!
Your program still needs some work!
Keep at it!
该函数应该做的是检查“oop”,如果不存在则以 -1 退出,如果存在则应以 1 返回 true。
我想我要问的是如何使该函数以正确的顺序返回 -1 和 1?
如果您想访问 main.cpp 和 segement.cpp,我可以将它们作为文件上传到某个地方,因为它们很长,我不想塞满帖子。
感谢您的帮助,谢谢。
编辑* 这是我们拥有的完整代码 http://jsfiddle.net/h5aKN/
“html”部分包含我们构建的 segement.cpp。 jscript 部分有 a2main.cpp,这是我们教授构建的。
【问题讨论】:
-
data[0] == "OOP";那味道。 -
我仍在努力更好地理解这个问题,因为这听起来很像一个简单的字符串匹配问题!!!
-
if(strstr(&word[i],data[i])!= NULL)可能不是正确的做法。 -
您想在字符串的任何位置检测“oop”,还是只检测开头?
-
缺少很多关于类型的信息。 C++ 是关于类型的。向我们展示类型。
标签: c++ string-matching