2015-11-14 100 views
-1
//Write a program that will input letter grades (A, B, C, D, F), the number of 
//which is input by the user (a maximum of 50 grades). The grades will be read 
//into an array. A function will be called five times (once for each letter grade) 
//and will return the total number of grades in that category. The input to the 
//function will include the array, number of elements in the array and the letter 
//category (A, B, C, D or F). The program will print the number of grades that 
//are A, B, etc. 

#include <iostream> 
using namespace std; 

double countGrade(char letterCategory, int size, char array); 

const int SIZE = 5; 
char letterCategory[SIZE] = {'A', 'B', 'C', 'D', 'F'}; 
char userLetters[50]; 

int main() 
{ 
    // Declare Variables 
    int numberOfGrades = 0; 
    int gradeNumbersA = 0; 
    int gradeNumbersB = 0; 
    int gradeNumbersC = 0; 
    int gradeNumbersD = 0; 
    int gradeNumbersF = 0; 

    // Get the number of grades to be read 
    cout << "Please input the number of grades to be read in. (1-50): "; 
    cin >> numberOfGrades; 

     // Input Validation 
     if(numberOfGrades < 1 || numberOfGrades > 50) 
     { 
      cout << "Error! Invalid Input. Please enter a number between 1 and 50.\n"; 
      cin >> numberOfGrades; 
     } 
     while(numberOfGrades < 1 || numberOfGrades > 50); 

     cout << "All grades must be upper case A B C D or F.\n"; 

    // Get the grade 
    { 
     for(int i = 0; i < numberOfGrades; i++) 
     { 
      cout << "Input a grade: "; 
      cin >> userLetters[i]; 
     } 
    } 

    // Output the number in each category 
    cout << "Number of A: " << gradeNumbersA << endl; 
    cout << "Number of B: " << gradeNumbersB << endl; 
    cout << "Number of C: " << gradeNumbersC << endl; 
    cout << "Number of D: " << gradeNumbersD << endl; 
    cout << "Number of F: " << gradeNumbersF << endl; 

    return 0; 
} 

double countGrade(char letterCategory, int size, char array) 
{ 
    for(int count = 0; count < 5; count++) 
    { 
     int a = 0, b = 0, c = 0, d = 0, f = 0; 

     switch(array) 
     { 
     case 'A': 
      a++; 
      return a; 
      break; 
     case 'B': 
      b++; 
      return b; 
      break; 
     case 'C': 
      c++; 
      return c; 
      break; 
     case 'D': 
      d++; 
      return d; 
      break; 
     case 'F': 
      f++; 
      return f; 
      break; 
     } 
    } 
} 

我很难找出这个问题。我不太清楚如何在主函数中调用countGrade函数。我知道我在这个项目的其他地方搞砸了,但我真的很感谢帮助。使用数组调用函数 - C++

+1

首先声明你的函数接受一个数组:'getGrade(char grades []);'或'getGrade(char * grades);'然后用数组名称调用它:'getGrade(grades);'你可以尝试使用'Google'作为开始。这是最基本的C++ – DeiDei

回答

2

您不需要switch语句。只需比较数组元素中的等级与参数中的等级即可。你不应该返回总数,直到函数结束。只要你匹配一个年级,你就回到循环中,所以你停止循环。

int countGrade(char letterCategory, int size, char array[]) { 
    int total = 0; 
    for (int count = 0; count < size; count++) { 
     if (array[count] == letterCategory) { 
      total++; 
     } 
    } 
    return total; 
} 

然后在main()你只是做:

int numberOfGradesA = countGrade('A', numberOfGrades, userLetters); 

和类似的其他牌号。