私は構造体と配列を使ってファイルから生徒の最大/最小等級を(そしてすぐに平均になるように)計算するプログラムを書いた。私は最小と最大の等級を把握していましたが、最高のグレードと最低のグレードを持つ学生を追加したいと思います。配列の行を見つけ、構造の.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;
}
最後はstudentArray [numberOfStudents - 1]、最初はstudentArray [0] – brettmichaelgreen
あなたは最大値を評価している間に最大値だけでなくグレードを割り当てたオブジェクト最大変数。このためには、学生タイプのオブジェクトletSay MaxObjectを作成し、MaxObject = student [i]をif側にmax = ...およびafterループで割り当てると、作成したオブジェクトのフィールドが表示されます。その関数に表示したくない場合は、生徒オブジェクトへの参照をこの関数に渡すことができます。この関数の終了後、送信された参照オブジェクトは最大生徒の値を保持します。 Min Studentを表示するのと同じ –