我试图用我已经拥有的代码创建一个函数(它完美地工作)。我以为我可以把编写的代码放到一个函数中并调用它。我没有得到任何错误,但这个功能绝对没有(我现在已经清空功能体),我不知道为什么。我怎么把它放到一个函数中?非常感谢有关此主题的帮助! 注意:当我在函数中测试代码(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);
}
}
}
答案 0 :(得分:1)
arraystore
返回void
,因此没有类型/值。
此外arraystore
中的所有变量都是本地变量,即它们在函数执行结束时被销毁。
arraystore
也没有任何参考参数。
在母亲SO的名字中,您是否希望该功能在功能范围之外产生任何可见的副作用?
在您的情况下,一个解决方案可能是:
通过参考该功能传递
array
和scoresarray
并删除 该函数中的局部变量。