0

这是代码:

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 type in Chem -turns to 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;
};
4

2 回答 2

2

考虑这个片段:

student[i].major == enteredMajor

student[i].major是 a char[5],在这种情况下会演变为 a char*。这是一个指针类型。

enteredMajor是一个char。这是一个整体类型。

您无法比较这些类型。

也许您打算这样贴花enteredMajor

char enteredMajor[5];

并像这样比较它们:

strcmp(student[i].major, enteredMajor) == 0
于 2012-12-06T01:13:37.430 回答
1

student[i].major是一个char数组;在表达式中使用时,它会衰减为指向char. 代码将其与enteredMajor具有 type的相等性进行比较char。因此抱怨:不能比较指针和整数(因为char被提升为int)。

于 2012-12-06T01:13:34.943 回答