C ++:从函数返回一个向量

时间:2015-11-24 05:58:52

标签: c++ arrays function vector return-value

我试图找到解决这个问题的方法,但到目前为止我还没有找到一个可以解决这个问题的方法。我正在编写一个程序,允许用户(目标受众为教师)输入四个不同年级类别的成绩。我决定使用向量来实现这一点,因为它们似乎比数组更灵活。我的主要问题是让我的main函数中的向量等于我填充函数的向量。以下是一些给我带来问题的代码:

#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> getGrades(string);

int main()
{
    string gradetype;
    vector<int> lab;
    vector<int> test;
    vector<int> project;
    vector<int> final_exam;
    int i = 0;
    cout << "Welcome to Grade Portal 4.0\n";
    cout << "Please enter the grade type followed by the\n";
    cout << "grades for the grade type.\n";
    cout << "The choice are: \n";
    cout << "Lab\n";
    cout << "Test\n";
    cout << "Project\n";
    cout << "Final\n";
    cout << "These can be entered in any order\n";
    cout << "Enter 'Q' at any time to quit\n";
    cout << "--------------------------------------------------\n";

    do
    {
        cout << "Enter grade type: ";
        getline(cin, gradetype);
        if (gradetype == "lab")
        {
            lab = getGrades(gradetype);
            i++;
        }
        else if (gradetype == "test")
        {
            test = getGrades(gradetype);
            i++;
        }
        else if (gradetype == "project")
        {
            project = getGrades(gradetype);
            i++;
        }
        else if (gradetype == "final")
        {
            final_exam = getGrades(gradetype);
            i++;
        }

        else if (gradetype == "q")
        {
            i = 5;
        }
        else
            cout << "You shoudlnt be seeing this\n";
        cin.ignore();
    }while (i < 4);
}
vector<int> getGrades(string gradetype)
{
    int gradeN;
    vector<int> grades;
    int grade;
    cout << "How many grades do you have to enter?: ";
    cin >> gradeN;

    for (int i = 0; i < gradeN; i++)
    {
        cin.ignore();
        cout << gradetype << " grade: ";
        cin >> grade;
        grades.push_back(grade);
    }
    return grades;
}

由于我一直在做的所有编辑,我的代码现在很多,但我拿出了我认为问题来自的部分。如果我使用循环在主函数中显示向量的内容,如“lab”或“test”,则内容不正确。新矢量的内容应该是用户输入的等级。相反,我得到不同的数字。 例如,我输入了以下信息并获得了一些非常奇怪的输出: 每个等级类型2个等级,每个等级为“99”(每个等级的内容应为99,99) 使用for循环,我打印出向量的内容并获得以下内容: 实验室矢量 - (3351064,3351064)| 测试向量 - (0,0)| 项目矢量 - (1983462368,1983462368)| 期末考试矢量 - (1982745200,1982745200)| 我有正确的向量中的元素数量,但数字是非常不正确的。根据我的样本输入,所有这些载体的内容应为99,99

我觉得好像问题在于设置“lab”向量的内容等于函数getGrades中创建的向量“grade”的内容。我没有得到任何构建错误或警告,代码执行成功,只是意外的结果。我确定它看起来很小,但是我无法解决这个问题。任何帮助将不胜感激!

0 个答案:

没有答案