需要帮助计算 a、b、c、d 和 f 的实例

Need help counting the instances of a's, b's, c's, d's, and f's

本文关键字:实例 帮助 计算      更新时间:2023-10-16

我必须计算分数数组中A, B, C, D和F的实例,但我不知道如何做到这一点。score1,score2和score3数组包含整数,所以我想我需要使用if语句来比较分数,但我不确定我将如何计数并显示它。我读了我的整本书,搜索了这个网站和其他网站,但找不到任何帮助我的东西。下面是我的代码:

#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
int getAverage(int,int,int);
string letterGrade(int);
void getInfo();
int main(int argc, char *argv[]) {
   getInfo();
   system("PAUSE");
    return EXIT_SUCCESS;
}
void getInfo() {
   const int info = 5;
   string last[info];
   string first[info];
   int ID[info];
   int score1[info];
   int score2[info];
   int score3[info];
   for (int count = 0; count < info; count++) {
      cout << "last namen";
      cin >> last[count];
      cout << "first namen";
      cin >> first[count];
      cout << "enter IDn";
      cin >> ID[count];
      cout << "enter test 1n";
      cin >> score1[count];
      cout << "enter test 2n";
      cin >> score2[count];
      cout << "enter test 3n";
      cin >> score3[count];   
   }
   cout << endl;
   for (int count = 0; count < info; count++) {
      cout << last[count] 
        << setw(10) << first[count] 
        << setw(10) << ID[count] 
        << setw(10) <<score1[count]
        << setw(10) << score2[count] 
        << setw(10) << score3[count] 
        << setw(10) << getAverage(score1[count],score2[count],score3[count])
        << setw(10) << letterGrade(getAverage(score1[count],score2[count],score3[count]));
      cout << endl;
   }   
}
string letterGrade(int average) {
   string lGrade;
   if (average > 89)
      lGrade = "A";
   else if (average > 79 && average < 90)
      lGrade = "B";
    else if (average > 69 && average < 80)
      lGrade = "C";
    else if (average > 59 && average < 70)
      lGrade = "D";
    else if (average >= 0 && average < 60)
      lGrade = "F";
    return lGrade;
}
int getAverage(int score1,int score2,int score3) {
   int average;
   average = ((score1 + score2 + score3)/ 3);
   return average;
}

我不是百分之百确定您想要做什么,但我想说的是,只需为numa、numb、numc、numd和numf创建变量,并在第二个for循环之前将它们设置为0。然后在调用letterGrade时适当地增加数字,如下所示:

int numAs = 0, numBs = 0, numCs = 0, numDs = 0, numFs = 0;
// ..
if (average > 89){
    lGrade = "A";
    numAs++;
}
else if (average > 79 && average < 90){
    lGrade = "B";
    numBs++;
}
else if (average > 69 && average < 80){
    lGrade = "C";
    numCs++;
}
else if (average > 59 && average < 70){
    lGrade = "D";
    numDs++;
}
else if (average >= 0 && average < 60){
    lGrade = "F";
    numFs++;
}
return lGrade;
// ..    

然后在for循环之后,只计算分数:

cout << "Number of As: " << numAs << endl;
cout << "Number of Bs: " << numBs << endl;
cout << "Number of Cs: " << numCs << endl;
cout << "Number of Ds: " << numDs << endl;
cout << "Number of Fs: " << numFs << endl;
int gradeCounts[5]; 
// ..
    if (average > 89) {
        lGrade = "A";
        gradeCounts[0] = gradeCounts[0] + 1;
    } else if (average > 79 && average < 90){
        lGrade = "B";
        gradeCounts[1] = gradeCounts[1] + 1;
    } else if (average > 69 && average < 80){
        lGrade = "C";
        gradeCounts[2] = gradeCounts[2] + 1;
    } else if (average > 59 && average < 70){
        lGrade = "D";
        gradeCounts[3] = gradeCounts[3] + 1;
    } else if (average >= 0 && average < 60){
        lGrade = "F";
        gradeCounts[4] = gradeCounts[4] + 1;
    }
    return lGrade;

我知道你的作业是 c++ ,我的(部分)答案是C,但我认为无论如何都值得分享,以告诉你有不同的方法可以达到相同的结果。例如,您可能对调整我的letter_grade()函数感兴趣,它使用常见的"过早返回"习惯用法,而不是if-else if-else序列。

#include <stdio.h>
#include <stdlib.h>
#define N_SCORES (100)
char letter_grade(int score) {
    if(score > 100 || score < 0) {
        return (char)0;
    }
    if(score > 85) return 'A';
    if(score > 70) return 'B';
    if(score > 55) return 'C';
    if(score > 40) return 'D';
    return 'F';
}
int main(void) {
    int histogram['F'-'A'+1] = {0};
    char letter;
    int score;
    int i;
    for(i=0; i<N_SCORES; i++) {
        score  = rand() % 101;
        letter = letter_grade( score );
        if( letter == 0 ) {
            fprintf(stderr, "Ignored invalid score (%d)n", score);
            continue;
        }
        histogram[ letter - 'A' ]++;
    }
    for(letter='A'; letter<='F'; letter++) {
        if( letter=='E' )
            continue;
        printf("Number of %c grades: %2dn", letter, 
               histogram[letter-'A']);
    }
    return 0;
}