当用户将值输入向量时,编译器崩溃

时间:2015-12-02 04:15:13

标签: c++

我是新的堆栈溢出,有点新编程。 C ++是我的第一语言,我在练习中越来越习惯,但我似乎无法解决这个问题。我询问用户有多少学生参加了调查,然后询问每个学生看过多少部电影。电影的数量是我试图存储到数组中的......这里是代码,

void FormArray(int students){

vector<int> MovieAry(5);

do{
cout << "How many students took the survey?" << endl;
cin >> students;
    if (students < 0)
        cout << "Please enter a positive value" << endl;
}while(students < 0);

for (int i = 0; i < students; i++){
    do{
        cout << "How many movies did student #" << i + 1 << " see? "; 
        cin >> MovieAry[i];
            if(MovieAry[i] < 0)
                cout << "Please enter a positive value" << endl;
            else if( MovieAry[i] > 19)
                cout << "The maximum allowed movies for this survey is 19" << endl;

    }while(MovieAry[i] < 0 || MovieAry[i] > 19);

cout << MovieAry[i] << " "; 
}

}

但是在输入最后一个值之后,我的prorgram崩溃说我的项目触发了一个断点。在我使用向量之前,我使用的是常规数组,但是在访问一些奇怪的0x0000数字时遇到错误。

感谢您的帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

您将MovieAry向量设置为5,然后输入实际学生数。如果学生人数超过5人,你的向量将超出界限。我建议您在阅读学生人数后创建向量,并将其设置为所需的大小。