无法将代码放入函数C ++中

时间:2015-12-07 22:12:14

标签: c++

我试图用我已经拥有的代码创建一个函数(它完美地工作)。我以为我可以把编写的代码放到一个函数中并调用它。我没有得到任何错误,但这个功能绝对没有(我现在已经清空功能体),我不知道为什么。我怎么把它放到一个函数中?非常感谢有关此主题的帮助! 注意:当我在函数中测试代码(cout<< array [0])时,它会完美地返回,但是,当我在main中执行相同的操作时,它什么也不返回。

#include<iostream>
#include<string>
#include<fstream>

    using namespace std;

const int ARRAY_SIZE = 20;
const int COLUMN = 6;

void arraystore(); //function to populate the arrays goes here



int main()
{
    string letterGrade;
    string array[ARRAY_SIZE];
    double scoresarray[ARRAY_SIZE][COLUMN];
    double grade[ARRAY_SIZE];

    ifstream inFile;
    inFile.open("studentInfoFile.txt");

    if (inFile) //I wish to call the function here and have it just store the information into both arrays
    {
        arraystore();
    }


    //this portion of code works great! I need to put it into a function.
    /*
    if(inFile)
    {
    for (int j = 0; j <= 18; j++)
    {
    inFile >> array[j];
    for (int i = 0; i <= 4; i++)
    {
    inFile >> scoresarray[j][i];
    }
    scoresarray[j][5] = ((scoresarray[j][0] + scoresarray[j][1] + scoresarray[j][2] + scoresarray[j][3] + scoresarray[j][4]) / 5);
    }
    }
    */



    for (int z = 0; z <= 18; z++)
    {
        int quotient = scoresarray[z][5] / 10;


        switch (quotient) {

        case 9:
            letterGrade = "A";
            break;
        case 8:
            letterGrade = "B";
            break;
        case 7:
            letterGrade = "C";
            break;
        case 6:
            letterGrade = "D";
            break;
        default:
            letterGrade = "F";
        }
        //cout << array[z] << " " << letterGrade << endl;
    }
    cout << "array: " << array[0] << endl << "score: " << scoresarray[0][4] << endl; //using this to test

    return 0;
}

void arraystore()
{
    //function body to populate the arrays goes here
}

这是我对函数代码的尝试:

        void arraystore()
        {
            string array[ARRAY_SIZE];
            double scoresarray[ARRAY_SIZE][COLUMN];
            ifstream inFile;
            inFile.open("studentInfoFile.txt");
            if (inFile)
            {
                for (int j = 0; j <= 18; j++)
                {
                    inFile >> array[j];
                    for (int i = 0; i <= 4; i++)
                    {
                        inFile >> scoresarray[j][i];
                    }
                    scoresarray[j][5] = ((scoresarray[j][0] + scoresarray[j][1] + scoresarray[j][2] + scoresarray[j][3] + scoresarray[j][4]) / 5);
                }
            }
        }

1 个答案:

答案 0 :(得分:1)

arraystore返回void,因此没有类型/值。

此外arraystore中的所有变量都是本地变量,即它们在函数执行结束时被销毁。

arraystore也没有任何参考参数。

在母亲SO的名字中,您是否希望该功能在功能范围之外产生任何可见的副作用?

在您的情况下,一个解决方案可能是:

  

通过参考该功能传递arrayscoresarray并删除   该函数中的局部变量。