【发布时间】:2017-12-19 21:48:40
【问题描述】:
我的代码表现得很奇怪。它有时会工作,有时会崩溃。
当它崩溃时会说:
一个问题导致程序停止正常工作
我的main:
int main() {
start();
Read();
cout << "Enter the code of the course: ";
cin >> coursecode;
cout << "\n1111111\n";
searchCourse(coursecode);
cout << "\n222222\n";
return 0;
}
我在 searchCourse 函数的上方和下方写了两个 couts 来查看程序是否编译了所有行。它确实编译了所有内容,最后它在崩溃之前打印 222222。
start 方法只是创建一个 BinaryTree 对象数组,然后存储 学生数据(从文本文件中读取)根据他们的课程。
开始():
BinaryTree *a[10];
void start()
{
for(int g=1;g<=10;g++)
{
a[g] = new BinaryTree(g);
}
}
搜索课程():
void searchCourse(string code)
{
for(int j=1;j<=count;j++)
{
if(a[j]->checkit(code)!=0)
{
a[j]->display();
break;
}
}
}
BinaryTree.h 中的 Checkit():
bool checkit(string m)
{
if (root==NULL)
return false;
else
if(root->data.getCourse()==m)
return true;
else
return false;
}
【问题讨论】:
-
数组从
C++中的索引0开始,而不是 1。我建议阅读一些 C++ 书籍,但您正在编写的程序表明您应该已经知道这样的基本知识. -
@PaulMcKenzie 我记得我们的老师从 1 开始数组。特别是在堆概念中。我不知道它是否有特殊情况,在这种情况下从 1 开始可能会更好,但我认为这样做不会造成很大的麻烦。谢谢回复
-
@ibrahim 那位老师应该被解雇。
-
我记得我们的老师从 1 开始数组。特别是在堆概念中——这不会改变 C++ 的规则。数组索引从 0 开始,一直到
n-1,其中n是条目的总数。尝试在 C++ 中编写基于 1 的假数组通常会导致像您这样的问题。
标签: c++ crash binary-tree main