2015-10-04 132 views
-1

當我嘗試將輸入分配到'成績'數組時,我無法理解爲什麼出現此錯誤消息。還有一條消息提示「IntelliSense:no operator」>>「與這些操作數匹配,操作數類型爲:std :: istream >> GradeType」。任何幫助或技巧請。先謝謝你。錯誤C2679:二進制'>>:找不到操作符找到類型爲'GradeType'的右側操作數

// This program will input an undetermined number of student names 
    // and a number of grades for each student. The number of grades is 
    // given by the user. The grades are stored in an array. 
    // Two functions are called for each student. 
    // One function will give the numeric average of their grades. 
    // The other function will give a letter grade to that average. 
    // Grades are assigned on a 10 point spread. 
    // 90-100 A 80- 89 B 70-79 C 60-69 D Below 60 F 

    #include <iostream> 

    using namespace std; 


    const int MAXGRADE = 25;    // maximum number of grades per student 
    const int MAXCHAR = 30;    // maximum characters used in a name 


    typedef char StringType30[MAXCHAR + 1];// character array data type used for names 
              // having 30 characters or less. 
    typedef float GradeType[MAXGRADE]; // one dimensional integer array data type 

    float findGradeAvg(GradeType, int); // finds grade average by taking array of 
              // grades and number of grades as parameters 

    char findLetterGrade(float);   // finds letter grade from average given 
              // to it as a parameter 


    int main() 

    { 
     StringType30 firstname, lastname; // two arrays of characters defined 
     int numOfGrades;     // holds the number of grades 
     GradeType grades;     // grades is defined as a one dimensional array 
     float average;      // holds the average of a student's grade 
     char moreinput;     // determines if there is more input 

     // Input the number of grades for each student 

     cout << "Please input the number of grades each student will receive." << endl 
      << "This number must be a number between 1 and " << MAXGRADE << " inclusive" << endl; 

     cin >> numOfGrades; 

     while (numOfGrades > MAXGRADE || numOfGrades < 1) 
     { 
      cout << "Please input the number of grades for each student." << endl 
       << "This number must be a number between 1 and " << MAXGRADE << " inclusive" << endl; 

      cin >> numOfGrades; 

     } 

     // Input names and grades for each student 

     cout << "Please input a y if you want to input more students" 
      << " any other character will stop the input" << endl; 
     cin >> moreinput; 

     while (moreinput == 'y' || moreinput == 'Y') 

     { 
      cout << "Please input the first name of the student" << endl; 
      cin >> firstname; 
      cout << endl << "Please input the last name of the student" << endl; 
      cin >> lastname; 

      for (int count = 0; count < numOfGrades; count++) 

      { 

       cout << endl << "Please input a grade" << endl; 

       cin >> grades; 
        // Fill in the input statement to place grade in the array 

      } 

      cout << firstname << ' ' << lastname << " has an average of "; 

      cout << findGradeAvg; // Fill in code to get and print average of student to screen 
      cout << findLetterGrade;// Fill in call to get and print letter grade of student to screen 

      cout << endl << endl << endl; 
      cout << "Please input a y if you want to input more students" 
       << " any other character will stop the input" << endl; 
      cin >> moreinput; 

     } 

     return 0; 
    } 

    //*********************************************************************** 
    //        findGradeAvg 
    // 
    // task:   This function finds the average of the 
    //     numbers stored in an array. 
    //    
    // data in:  an array of integer numbers 
    // data returned: the average of all numbers in the array 
    // 
    //*********************************************************************** 

    float findGradeAvg(GradeType array, int numgrades) 

    { 

     float sum = 0; 
     for (int pos = 0; pos < numgrades; pos++) 
     { 
      sum = sum + array[pos]; 
     } 
     return (sum/numgrades); // Fill in the code for this function 


    } 

    //*********************************************************************** 
    //        findLetterGrade 
    // 
    // task:   This function finds the letter grade for the number 
    //     passed to it by the calling function 
    //    
    // data in:  a floating point number 
    // data returned: the grade (based on a 10 point spread) of the number 
    //     passed to the function 
    // 
    //*********************************************************************** 

    char findLetterGrade(float numgrade) 

    { 

     if (numgrade >= 90 && numgrade <= 100) 
     { 
      return 'A'; 
     } 
     if (numgrade >= 80 && numgrade <= 89) 
     { 
      return 'B'; 
     } 
     if (numgrade >= 70 && numgrade <= 79)// Fill in the code for this function 
     { 
      return 'C'; 
     } 
     if (numgrade >= 60 && numgrade <= 69) 
     { 
      return 'D'; 
     } 
     else 
     { 
      return 'F'; 
     } 

    } 
+0

數組在C++在很多方面是特殊的。你的'GradeType' typedef掩蓋了你擁有一個數組的事實,即使不是編譯器,也可能讓你的代碼很難理解。 –

回答

1

grades是一個數組。

因此,使用

cin >> grades[count]; 

可能是更多的問題

+0

謝謝。我記得現在爲什麼它不起作用。猜猜我正在反思它。 –

相關問題