简体   繁体   English

获得 10 名学生的平均成绩 c++

[英]get average grade for 10 students c++

This program will need to handle all grades for 10 students.该计划需要处理 10 名学生的所有成绩。 Each student has a first and last name, an id number, 3 homework grades, 3 labs grades, 3 test grades, and 1 final exam grade.每个学生都有姓名、身份证号码、3 个作业成绩、3 个实验室成绩、3 个考试成绩和 1 个期末考试成绩。 display the final course grade in both numbered and letter version以数字和字母版本显示最终课程成绩

The equation only works for the first set of grades then it adds a little bit to the next average I just can't figure out whats wrong.该等式仅适用于第一组成绩,然后它会为下一个平均值增加一点,我就是不知道出了什么问题。

/*This program will need to handle all grades for 10 students.
Each student has a first and last name, an id number,
3 homework grades, 3 labs grades, 3 test grades, and 1 final exam grade.
display the final course grade in both numbered and letter version
*/
#include <iostream> // main library
#include <string> //enables use of strings
#include <iomanip> // for setw
#include <Windows.h> // used to set console title
using namespace std; // for cout and cin

const int MAXSTUDENTS = 2;
const int MAXGRADES = 3;
const int MINGRADES = 1;

int main()
{// Get names form students

    SetConsoleTitle("Gradebook");
    double hwGrade[MAXSTUDENTS][MAXGRADES];
    double labGrade[MAXSTUDENTS][MAXGRADES];
    double testGrade[MAXSTUDENTS][MAXGRADES];
    double feGrade[MAXSTUDENTS];
    double final_num_grade[MAXSTUDENTS];
    double hwAve =0, labAve=0, testAve=0;                                       // this will be used to calculate the averages
    string fName[MAXSTUDENTS];
    string lName[MAXSTUDENTS]; 
    string line;                                                         // to set the two string variables
    string id[MAXSTUDENTS];                                                                         // id will be a whole number so int was apropiate
    //first for statement. ensuere that the program is run 10 times

    for (int s = 0; s < MAXSTUDENTS; s++) {
        cout << "Enter student's first name:    ";                                   // ask the user for the first name
        getline(cin, fName[s]);                                                             // accepts students first name
        cout << "Enter stedent's last name: ";                                       //ask the user for last name
        getline(cin, lName[s]);                                                             // accepts students last name
        cout << "Enter student's id:        ";                                   // ask user for student id
        getline(cin, id[s]);



        // this loop will ask for three homework grades 
        for (int n = 0; n < MAXGRADES; n++) {

            cout << "Homework grade " << n + 1 << " is      ";                                  //tells the user waht the program needs
            cin >> hwGrade[s][n];                                                               //lets the user input the homework grades
            hwAve += hwGrade[s][n];
        }
        hwAve = hwAve / 3;

        // this loop will ask for three lab grades 
        for (int l = 0; l < MAXGRADES; l++) {
            cout << "Lab grade " << l + 1 << " is           ";
            cin >> labGrade[s][l];                                                      //lets the user input the LAB grades
            labAve += labGrade[s][l];
        }
        labAve = labAve / 3;


        //this loop will ask for three test grades
        for (int t = 0; t < MAXGRADES; t++) {
            cout << "Test grade " << t + 1 << " is          ";
            cin >> testGrade[s][t];                                                 //lets the user input the test grades
            testAve += testGrade[s][t];                                         // the average is calculated
        }
        testAve = testAve / 3;



            cout << "Final exam grade:      ";                                          // asks user for final exam grade
            cin >> feGrade[s];


            // equation to get the final course grade

            final_num_grade[s] = (hwAve * 0.20) + (labAve * 0.25) + (testAve * 0.30) + (feGrade[s] * 0.25);
            line.assign(50, '-');
            cout << line << endl;

    }

    for (int i = 0; i < MAXSTUDENTS; i++) {
        cout << "Final Course Grade for " << fName[i] << " " << lName[i] << " with the id " << id[i] << " is    "           // displays name of student
            << showpoint << fixed << setprecision(1) << final_num_grade[i];     //set to 1 decimal place
                                                                                        //if statement shows the letter grade
        if (final_num_grade[i] >= 89.5) {                                                    //A if student made 89.5 or more
            cout << " (A)\n";
        }
        else if (final_num_grade[i] >= 79.5) {                                                  //B if student made 79.5 to 89.4
            cout << " (B)\n";
        }
        else if (final_num_grade[i] >= 69.5) {                                                  // C if student made 69.5 yo 79.4
            cout << " (C)\n";
        }
        else if (final_num_grade[i] >= 59.5) {                                                  // D if student made 59.5 to 69.4
            cout << " (D)\n";
        }
        else {                                                                              // F if student made less than 59.4
            cout << " (F)\n";
        }
    }
    return 0;
}

您尚未将这些变量重置为零: hwAve, labAve, testAve ,这会使第二个学生的成绩略高

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM