Итак, я написал программу для использования структуры и массива для вычисления максимальной/минимальной оценки (и в скором времени средней) учащихся из файла. В то время как я выяснил минимальные и максимальные оценки, я также хочу добавить, какой студент имел самый высокий класс и самый низкий класс. Как я могу найти строку массива и отобразить .first и .last структуры?Как настроить таргетинг на массив в C++
#include <iostream>
#include <string>
#include <fstream>
#include <array>
using namespace std;
struct student {
int id;
string first;
string last;
float grade;
};
string getFileName();
void fillArrayFromFile(ifstream&, student[], int&);
float calculateMaximumGrade(student[], int);
float calculateMinimumGrade(student[], int);
float calculateAverageGrade(student[], int);
int main() {
int numofStudents = 5;
const int NUM_VALS = 5;
student studentArray[NUM_VALS];
ifstream filename;
//filename.open(getFileName() + ".txt");
fillArrayFromFile(filename, studentArray, numofStudents);
cout << "Highest grade: " << calculateMaximumGrade(studentArray, numofStudents) << endl;
cout << "Lowest grade: " << calculateMinimumGrade(studentArray, numofStudents) << endl;
//cout << "Average grade: " << calculateAverageGrade(studentArray, numofStudents) << endl;
return 0;
}
string getFileName()
{
// To be completed
return 0;
}
void fillArrayFromFile(ifstream& ins, student studentArray[], int& numberOfStudents)
{
ins.open("input.txt");
for (int i = 0; i < numberOfStudents; i++) {
ins >> studentArray[i].id;
ins >> studentArray[i].first;
ins >> studentArray[i].last;
ins >> studentArray[i].grade;
}
ins.close();
return;
}
// calculate the maximum grade in the array
float calculateMaximumGrade(student studentArray[], int numberOfStudents)
{
float max = 0;
max = studentArray[0].grade;
for (int i = 0; i < numberOfStudents; i++) {
if (studentArray[i].grade > max) {
max = studentArray[i].grade;
}
}
return max;
}
// calculate the minimum grade in the array
float calculateMinimumGrade(student studentArray[], int numberOfStudents)
{
float min = 0;
min = studentArray[0].grade;
for (int i = 0; i < numberOfStudents; i++) {
if (studentArray[i].grade < min) {
min = studentArray[i].grade;
}
}
return min;
}
// calculate the average grade in the array
float calculateAverageGrade(student studentArray[], int numberOfStudents)
{
// To be completed
return 0;
}
Последнее является студентомArray [numberOfStudents - 1], сначала studentArray [0] – brettmichaelgreen
Вы можете сделать следующее .... пока вы оцениваете максимальное значение, не просто отслеживайте максимальное значение, но также и объект, чей класс вы назначаете max. Для этого создайте объект студента типа letSay MaxObject и назначьте MaxObject = student [i] под полем if вдоль стороны max = ... и после цикла отобразите поля созданного вами объекта. И если вы не хотите отображать в этой функции, вы можете передать ссылку на объект-ученик на эту функцию, и после того, как эта функция закончится, ваш отправленный объект ссылки будет содержать значения max students. То же самое для отображения Min Student –