c++ - 数组在 while 循环中未正确初始化

标签 c++ arrays loops for-loop while-loop

我的问题是我设置了一个数组来存储根据从文件中读取的值计算得出的总计。然后将这些存储的总数相加以找到总体平均值。

此问题源于程序开头的“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;

最佳答案

int total[numStud]; 是一个 variable length array并且在 C++ 中不是标准的。如果你需要一个数组并且你不知道大小是多少那么你应该使用 std::vector . 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
}

关于c++ - 数组在 while 循环中未正确初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31524265/

相关文章:

c++ - LINK2019 : unresolved external symbol for a function returning shared_ptr<int>

c++ - Boost ASIO 阻塞回调

php - 转推机制如何在推特上运作?

java - Java 中是否有嵌套循环的最大数量?

c++ - 包含字符串的结构的 Boost Interprocess vector 是否需要特殊分配器?

关于字符串类实现的 C++ 考试

javascript - 我需要帮助优化功能

java - Java如何知道跳出循环时跳转到哪里?

c++ - 将静态数组复制到动态数组

c# - char[] c 和 char c[] 有什么区别?