コードは次のとおりです。
void option5 (StudentRecord student[], int n)
{
double gpaThreshold;
char enteredMajor;
int i;
cout << "Enter a GPA threshold: ";
cin >> gpaThreshold;
cin.ignore(80, '\n');
cout << "Enter a Major: ";
cin >> enteredMajor;
cin.ignore(80, '\n');
enteredMajor = toupper(enteredMajor);
for (i = 0; i < n; i++)
{
if (student[i].gpa >= gpaThreshold && student[i].major == enteredMajor)
{
if (i % 10 == 0)
{
cin.ignore();
}
cout << setw(3) << right << i+1 << ". "
<< setw(20) << left << student[i].lastName
<< setw(20) << left << student[i].firstName
<< setw(8) << left << student[i].major
<< fixed << setprecision(2) << setw(8) << left << student[i].earnedHours
<< fixed << setprecision(2) << setw(6) << left << student[i].gpa << endl;
}
}
}
StudentRecord は構造体であり、その行の唯一の整数は 'i' ですが、ポインター (私が想定する必要があります) は .major です。
入力された専攻を、配列内の「専攻」の値と比較したいと考えています。EG I は Chem と入力します - CHEM に変わります - その専攻 (および GPA のしきい値) の下にあるすべての学生を取得します - 上記のステートメントを表示します (「X」専攻のすべての学生)
助言がありますか?ヘルプ?コメント? 正/負のフィードバック?
編集:構造体は次のとおりです。
struct StudentRecord
{
char lastName [16]; // field definitions of the structure
char firstName[16];
char hometown [16];
char major[5];
int studentNumber;
double balance;
int earnedHours;
double gpa;
};