Чтение из файла и размещение его содержимого в массиве объектов и сортировка их - PullRequest
0 голосов
/ 07 октября 2019

Я пытался читать из файла и помещать его содержимое в массив объектов в классе и пытался отсортировать их с помощью QuickSort, MergeSort и т. Д. В качестве назначения. Но моя проблема заключается в том, как на самом деле читать из файла и помещать их в массив динамического размера на основе файла TXT и в основной. Я знаю о ifstream и как открыть и закрыть файл. (Задание фона: https://docdro.id/PCb1ZBY)

У меня есть это для моего класса, но я не знаю, с чего начать.

class Student
{
private:
  string firstName;
  string lastName;
  double GPA;
public:
Student() { firstName = ""; lastName = ""; GPA = 0.0; }
// Default Constructor
Student(string f, string l, double g) {firstName = f; lastName = l;}

void setFName(string f) {firstName = f;}
string getFName() { return firstName;}

void setLName(string l) {lastName = l;}
string getLName() {return lastName;}

void setGPA(double g) {GPA = g;}
double getGPA() { return GPA;}



};

Текстовый файл, из которого я читаю:

Andrew Koch 2.0
Landyn Adkins 2.6
Jakobe Carey 2.7
Troy Murray 2.9
Cullen Dyer 3.0
Zaire Murphy 2.2
Zaniyah Martinez 3.7
Nolan Lynch 0.6
Josh Harris 1.3
Alejandra Stevens 2.1
Reginald Graves 1.9
Raelynn Castro 3.8
Oscar Norman 1.1
Emerson Randolph 4.0
Mitchell Roman 3.0
Alessandro Huff 0.9
Clarissa Rocha 3.1
Pedro Acevedo 1.1
Katelyn Gilmore 1.9
Julianna Carroll 4.0

Я также хочу отсортировать этот массив с помощью алгоритмов сортировки по их GPA на основе выбора пользователя. Я создал меню переключения регистра и функции сортировки (MergeSort и QuickSort), но, опять же, нужна помощькак передать содержимое текстового файла в массив объектов и затем использовать их в функциях main: EX:

void heapSort(int arr[], int size)
{
    for (int index = size / 2 - 1; index >= 0; index--)
    {
        maxHeapify(arr, size, index); // already written but not included in this post

    }    

    for ( int index = size - 1; index >= 0; index--)
    {
        swap(&arr[0], &arr[index]);

        maxHeapify(arr, size, index);


    }    

}   

1 Ответ

0 голосов
/ 07 октября 2019

Вам достаточно потока объекта, чтобы получить ввод из текстового файла. Прочитайте следующее, прочитайте данные

std::ifstream inputFile("input.txt");
std::string firstName, lastName;
double gpa;
if (inputFile.is_open()) {
    while (!inputFile.eof()) {
        inputFile >> firstName >> lastName >> gpa;
        std::cout << firstName << "," << lastName << "," << gpa << std::endl;
    }
}

Затем вы можете создать std::vector<Student> и создать свой собственный компаратор

...