2015-07-20 46 views
1

我的问题是,我已经建立了一个数组来存储从文件中读取值计算,总计。然后将这些存储的总计加在一起以找到总体平均值。阵列不是while循环中正确初始化

此问题源于程序开始处的'cin',用户输入一个数字,并且该数字应该通过设置程序循环次数和数组内多少个模块来驱动程序。无论我尝试多少,该阵列似乎都不能正常工作。

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

using namespace std; 

int main() 
{ 
    string StudentGrades; 
    int studentID; 
    double quiz1; 
    double quiz2; 
    double quiz3; 
    double quiz4; 
int total = 0; 
double choice; 
ofstream outFile; 
double numStud=1; 

cout << "Enter student ID number, Quiz 1 Grade, Quiz 2 Grade , Quiz 3 Grade, Quiz 4 Grade" << endl; 
outFile.open("StudentGrades.txt"); 
cout << "How many students would you like to enter?" << endl; 
cin >> numStud; 

for (int x = 0; x < numStud; x++) 
{ 
    cout << "Enter student ID: "; 
    cin >> studentID; 
    cout << "Enter quiz grade 1: "; 
    cin >> quiz1; 
    //cout << quiz1; 
    cout << "Enter quiz grade 2: "; 
    cin >> quiz2; 
    //cout << quiz2; 
    cout << "Enter quiz grade 3: "; 
    cin >> quiz3; 
    //cout << quiz3; 
    cout << "Enter quiz grade 4: "; 
    cin >> quiz4; 
    //cout << quiz4; 
    cout << endl; 
    //outFile.open("StudentGrades.txt"); 
    if (outFile.is_open()) 
    { 
     cout << "inside if/else outFile" << endl; 
     //outFile << "File successfully open"; 

     outFile << studentID << " " << quiz1 << " " << quiz2 << " " << quiz3 << " " << quiz4 << endl; 

    } 
    else 
    { 
     cout << "Error opening file"; 
    } 
    outFile.close(); 
    /*cout << "Enter 0 for no more students. Enter 1 for more students." << endl; 
    cin >> choice; 
    if (choice == 1) 
     continue; 
    if (choice == 0) 
    { 
     outFile.close(); 
     break; 
    }*/ 

} 



ifstream inFile; 
inFile.open("StudentGrades.txt"); 
int sTotal; 
int total[numStud]; 
while (inFile >> studentID >> quiz1 >> quiz2 >> quiz3 >> quiz4) 
{ 
    //cout << studentID << " " << quiz1 << " " << quiz2 << " " << quiz3 << " " << quiz4 << endl; 
    total = (quiz1 + quiz2 + quiz3 + quiz4); 
    sTotal = total[numStud]; 

    double avg = total/4; 


} 


system("pause"); 
return 0; 

}

+0

'INT总[numStud]'不是标准compilant C++ – Creris

回答

2

int total[numStud];variable length array并且不是在C++标准。如果你需要一个阵列,你不知道尺寸是多少,那么你应该使用std::vector。一个向量几乎可以像数组一样使用。例如,你可以将变成:

int total; 
std::vector<int> studentTotal; 
while (inFile >> studentID >> quiz1 >> quiz2 >> quiz3 >> quiz4) 
{ 
    //cout << studentID << " " << quiz1 << " " << quiz2 << " " << quiz3 << " " << quiz4 << endl; 
    studentTotal.push_back(quiz1 + quiz2 + quiz3 + quiz4); // insert into the vector at the end 
    total += studentTotal.back(); // get last inserted element 
} 
+0

你可以给我哪里会去一个例子吗? –

+0

@ConnorLance我编辑了我的答案给你一个小例子。 – NathanOliver

+0

它是什么库名称,因为它为我创建错误 –