Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何修复';未在此范围内声明ARRSSTUD';C+中的错误+;_C++ - Fatal编程技术网

C++ 如何修复';未在此范围内声明ARRSSTUD';C+中的错误+;

C++ 如何修复';未在此范围内声明ARRSSTUD';C+中的错误+;,c++,C++,我目前正在编写一个程序,它将在4列(ID、名字、姓氏和GPA)中显示学生记录,按升序对他们的记录进行排序,并从排序后的学生记录中将每个GPA重置为0.0 学生记录存储在一个名为“StudentInfo.txt”的文本文件中 我遇到的问题是在ifstream inputFile之前声明一个结构数组。在第42、53和68行显示一条错误消息,显示“ARRSSTUD未在此范围内声明” 我尝试实现了studentInfo**arrStud[SIZE]和studentInfo*arrStud[SIZE],但

我目前正在编写一个程序,它将在4列(ID、名字、姓氏和GPA)中显示学生记录,按升序对他们的记录进行排序,并从排序后的学生记录中将每个GPA重置为0.0

学生记录存储在一个名为“StudentInfo.txt”的文本文件中

我遇到的问题是在
ifstream inputFile
之前声明一个结构数组。在第42、53和68行显示一条错误消息,显示“ARRSSTUD未在此范围内声明”

我尝试实现了
studentInfo**arrStud[SIZE]
studentInfo*arrStud[SIZE]
,但没有成功,出现了另一堆错误

如果有人能帮我解决这个问题,我将不胜感激

我当前的代码:

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

using namespace std;

struct studentInfo
{
    int ID;
    string firstName;
    string lastName;
    double GPA;
};

const int SIZE = 100;
void display(/*parameter*/,int);
void resetGPA(studentInfo **, int);
void sortStud(studentInfo **, int);

int main()
{
    int counter = 0;
    int ID;
    string firstName;
    string lastName;
    double GPA;

    // Declare arrStud here...

    ifstream inputFile;

    inputFile.open("StudentInfo.txt");
    if (inputFile.is_open())
    {
        cout << "ID:" << setw(15) << "Name:" << setw(14) << "GPA:" << endl;
        cout << "-------------------------------------------" << endl;

        while(!inputFile.eof())
        {
            inputFile >> ID >> firstName >> lastName >> GPA;
            arrStud[counter] = new studentInfo;

            arrStud[counter]->ID = ID;
            arrStud[counter]->firstName = firstName;
            arrStud[counter]->lastName = lastName;
            arrStud[counter]->GPA = GPA;

            counter++;
        }

        for (int i = 0; i < counter; i++)
        cout << i << arrStud[i]->ID
             << setw(8) << arrStud[i]->firstName
             << setw(10) << arrStud[i]->lastName
             << setw(8) << arrStud[i]->GPA
             << endl;
        cout << "-------------------------------------------" << endl;
        cout << endl;

        inputFile.close();
    }
    else
        cout << "File cannot be opened.";
        inputFile.close();


    display(arrStud, counter);
    cout << endl;
    cout << "Sorting Students by ID..." << endl;
    cout << endl;
    sortStud(arrStud, ID);
    cout << endl;
    cout << "Resetting GPA Data..." << endl;
    cout << endl;
    resetGPA(arrStud, GPA);
}

void display()
{

}

void resetGPA(studentInfo** students, int numStu)
{

    for (int i = 0; i < numStu; i++)
    {
        students[i]->GPA = 0.0;
    }

}

void sortStud(studentInfo** students, int numStu)
{
    int lowestIDIndex; //holds the index in the array students of the student with the lowest ID

    for (int i = 0; i < numStu; i ++)
    {
        lowestIDIndex = i; //always start with lowest ID being first student

        for (int j = i; j < numStu; j++) //j is equal to i so that you don't search the already sorted elements, which are less than i
        {
            if (students[j]->ID < students[lowestIDIndex]->ID) //search for the lowest ID
            {
                lowestIDIndex = j; //keep track of the lowest ID
            }
        }
            //switch the lowest element with the front-most element
            studentInfo* tempStuPtr = students[i];
            students[i] = students[lowestIDIndex];
            students[lowestIDIndex] = tempStuPtr;
    }
}

您的代码中没有声明任何内容!在
main()
函数的顶部附近,您需要这样的内容(或者您可以将其作为全局变量,比如说在
main
的定义之前):

然后,在
main
结束时(或接近结束时),您需要释放通过
new
调用创建的内存:

for (int c = 0; c < counter; ++c) delete arrStud[c];

您的代码中还有许多其他错误!如果为下一次生成启用编译器警告,这些警告将变得清晰。
ID:          Name:          GPA:
-----------------------------------
123456789    John   Johnson     3.5
512434990    Mary   Jackson     3.9
342432444   Peter     Young     2.3
470068625     Jim       Lee     2.9
234324324   Tammy    Gaddis     3.1
121219000   Ester    Schwab     2.7
-----------------------------------


Sorting Students by ID...

ID:          Name:          GPA:
-----------------------------------
512434990    Mary   Jackson     3.9
123456789    John   Johnson     3.5
234324324   Tammy    Gaddis     3.1
470068625     Jim       Lee     2.9
121219000   Ester    Schwab     2.7
342432444   Peter     Young     2.3
-----------------------------------


Resetting GPA Data...

ID:          Name:          GPA:
-----------------------------------
512434990    Mary   Jackson     0.0
123456789    John   Johnson     0.0
234324324   Tammy    Gaddis     0.0
470068625     Jim       Lee     0.0
121219000   Ester    Schwab     0.0
342432444   Peter     Young     0.0
-----------------------------------
studentInfo* arrStd[SIZE];
for (int c = 0; c < counter; ++c) delete arrStud[c];
void display(studentInfo**, int);

void display(studentInfo** students, int numStu)
{
    // Do something here, I guess!
}