Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a grading program for a class with the following grading policies, using a

ID: 3571494 • Letter: W

Question

Write a grading program for a class with the following grading policies, using a structure to store the data a. There are two quizzes, each graded on the basis of 10 points (0-100, an integer data type. b. There is one midterm exam and one final exam, each graded on the basis of 100 points (0-100), a foat data type. c. The final exam counts for 50% of the final grade, the midterm counts for 25%, and the two quizzes together count for a total of 25%. (Do not forget to normalize the quiz scores. They should be convertedio a program percentage before they are averaged in) Please include output Use the usual grading scale that we have used throughout the semest Also sending you text file assigning letter grades. The program will read in the student's scores (a total of 4 scores) from a text file (gradesin.Dxt ea), also located in the Week 14 module, and output the students' records as describedbelow. The results will be written to a file called gradesout.txt.

Explanation / Answer

#include <iostream>

#include <string>

#include <fstream>

#include <iomanip>

#include <cmath>

struct Data

{

    int studentID;

    string first_name;

    string last_name;

    int exam1;

    int exam2;

    int exam3;

    int total;

    char ch;

};

const int SIZE = 9;

const int INFO = 4;

// Function prototypes

void openInputFile(ifstream &, string);

void getTotal(Data[]);

void getGrade(Data[]);

void calcLowest(Data[], int &, int &, int &, int &, int[]);

void calcHighest(Data[], int &, int &, int &, int &, int[]);

void getAverage(Data[], int, double &, double &, double &, double &, double[]);

void getStd(Data[], double &, double &, double &, double &, double &, double &, double &, double &, double[]);

void print(Data[], int[], int[], double[], double[]);

void sort(Data[]);

int main()

{

    // Variables

    Data arr[SIZE];

    int lowest1, lowest2, lowest3, lowest4; /

    int highest1, highest2, highest3, highest4;

    double average1 = 0, average2 = 0, average3 = 0, average4 = 0;

    double std1 = 0, std2 = 0, std3 = 0, std4 = 0;

    int lowest[INFO] = {};

    int highest[INFO] = {};

    double average[INFO] = {};

    double standardDeviation[INFO] = {};

    ifstream inFile;

    string inFileName = "C:\Users\Ravi\Desktop\gradesIn.txt";

    // Call function to read data in file

    openInputFile(inFile, inFileName);

    // Read data into an array of structs

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

    {

        inFile >> arr[count].studentID >> arr[count].first_name >> arr[count].last_name >> arr[count].exam1 >> arr[count].exam2 >> arr[count].exam3;

    }

    // Close input file

    inFile.close();

    // Get score total for each student

    getTotal(arr);

    // Determine grade for each student

    getGrade(arr);

    // Calculate lowest scores in each exam and total scores

    calcLowest(arr, lowest1, lowest2, lowest3, lowest4, lowest);

    // Calculate highest scores in each exam and total scores

    calcHighest(arr, highest1, highest2, highest3, highest4, highest);

    // Calculate average of each exam and the average of the total scores

    getAverage(arr, SIZE, average1, average2, average3, average4, average);

    // Calculate standard deviation of each category

    getStd(arr, std1, std2, std3, std4, average1, average2, average3, average4, standardDeviation);

    cout << " ";

    // Print unsorted data

    print(arr, lowest, highest, average, standardDeviation);

    cout << " ";

    // Sort data

    sort(arr);

    // Print sorted data

    print(arr, lowest, highest, average, standardDeviation);

    system("PAUSE");

    return 0;

}

/**

* Pre-condition:

* Post-condition:

*/

void openInputFile(ifstream &inFile, string inFileName)

{

    //Open the file

    inFile.open(inFileName);

    //Input validation

    if (!inFile)

    {

        cout << "Error to open file." << endl;

        cout << endl;

        return;

    }

}

/**

* Pre-condition:

* Post-condition:

*/

void getTotal(Data arr[])

{

    for(int i = 0; i < SIZE; i++)

    {

        arr[i].total = arr[i].exam1 + arr[i].exam2 + arr[i].exam3;

    }

}

/**

* Pre-condition:

* Post-condition:

*/

void getGrade(Data arr[])

{

    for(int i = 0; i < SIZE; i++)

    {

        if(arr[i].total >= 270)

            arr[i].ch = 'A';

        else if(arr[i].total >= 240)

            arr[i].ch = 'B';

        else if(arr[i].total >= 210)

            arr[i].ch = 'C';

        else if(arr[i].total >= 180)

            arr[i].ch = 'D';

        else

            arr[i].ch = 'F';

    }

}

/**

* Pre-condition:

* Post-condition:

*/

void calcLowest(Data arr[], int &lowest1, int &lowest2, int &lowest3, int &lowest4, int lowest[])

{

    int smallest = 0;

    lowest1 = arr[0].exam1;

    lowest2 = arr[0].exam2;

    lowest3 = arr[0].exam3;

    lowest4 = arr[0].total;

    // Loop to determine lowest score from Exam1, 2, 3, and Total

    for (int i = 0; i < SIZE; i++)

    {

        if (lowest1 > arr[i].exam1)

        {

            lowest1 = arr[i].exam1;

            smallest = i;

        }

       if (lowest2 > arr[i].exam2)

        {

            lowest2 = arr[i].exam2;

            smallest = i;

        }

        if (lowest3 > arr[i].exam3)

        {

            lowest3 = arr[i].exam3;

            smallest = i;

        }

        if (lowest4 > arr[i].total)

        {

            lowest4 = arr[i].total;

            smallest = i;

        }

    }

    // Loop lowest values into an array of size 4

    for(int index = 0; index < INFO; index++)

    {

        if(index == 0)

            lowest[0] = lowest1;

        else if(index == 1)

            lowest[1] = lowest2;

        else if(index == 2)

            lowest[2] = lowest3;

        else if(index == 3)

            lowest[3] = lowest4;

        else

            cout << "Fail!" << endl;

    }

}

void calcHighest(Data arr[], int &highest1, int &highest2, int &highest3, int &highest4, int highest[])

{

    int biggest = 0;

    highest1 = arr[0].exam1;

    highest2 = arr[0].exam2;

    highest3 = arr[0].exam3;

    highest4 = arr[0].total;

    // Loop to determine highest score from Exam1, 2, 3, and Total

    for (int i = 0; i < SIZE; i++)

    {

        if (highest1 < arr[i].exam1)

        {

            highest1 = arr[i].exam1;

            biggest = i;

        }

        if (highest2 < arr[i].exam2)

        {

            highest2 = arr[i].exam2;

            biggest = i;

        }

        if (highest3 < arr[i].exam3)

        {

            highest3 = arr[i].exam3;

            biggest = i;

        }

        if (highest4 < arr[i].total)

        {

            highest4 = arr[i].total;

            biggest = i;

        }

    }

    // Loop highest values into an array of size 4

    for(int index = 0; index < INFO; index++)

    {

        if(index == 0)

            highest[0] = highest1;

        else if(index == 1)

            highest[1] = highest2;

        else if(index == 2)

            highest[2] = highest3;

        else if(index == 3)

            highest[3] = highest4;

        else

            cout << "Fail!" << endl;

    }

}

/**

* Pre-condition:

* Post-condition:

*/

void getAverage(Data arr[], int size, double &average1, double &average2, double &average3, double &average4, double average[])

{

    int sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0;

    // Get sum of each category (Exam1, 2, 3, and Total)

    for(int i = 0; i < SIZE; i++)

    {

        sum1 += arr[i].exam1;

        sum2 += arr[i].exam2;

        sum3 += arr[i].exam3;

        sum4 += arr[i].total;

    }

    // Calculate average for each category

    average1 += static_cast<double>(sum1)/size;

    average2 += static_cast<double>(sum2)/size;

    average3 += static_cast<double>(sum3)/size;

    average4 += static_cast<double>(sum4)/size;

    // Loop average values into an array of size 4

    for(int index = 0; index < INFO; index++)

    {

        if(index == 0)

            average[0] = average1;

        else if(index == 1)

            average[1] = average2;

        else if(index == 2)

            average[2] = average3;

        else if(index == 3)

            average[3] = average4;

        else

            cout << "Fail!" << endl;

    }

}

void getStd(Data arr[], double &std1, double &std2, double &std3, double &std4, double &average1, double &average2, double &average3, double &average4, double standardDeviation[])

{

    double deviationSum1 = 0, deviationSum2 = 0, deviationSum3 = 0, deviationSum4 = 0;

    for(int i = 0; i < SIZE; i++)

    {

        deviationSum1 += pow((arr[i].exam1 - average1), 2);

        deviationSum2 += pow((arr[i].exam2 - average2), 2);

        deviationSum3 += pow((arr[i].exam3 - average3), 2);

        deviationSum4 += pow((arr[i].total - average4), 2);

    }

    std1 = sqrt(deviationSum1 / ((SIZE) - 1));

    std2 = sqrt(deviationSum2 / ((SIZE) - 1));

    std3 = sqrt(deviationSum3 / ((SIZE) - 1));

    std4 = sqrt(deviationSum4 / ((SIZE) - 1));

    // Loop average values into an array of size

    for(int index = 0; index < INFO; index++)

    {

        if(index == 0)

            standardDeviation[0] = std1;

        else if(index == 1)

            standardDeviation[1] = std2;

        else if(index == 2)

            standardDeviation[2] = std3;

        else if(index == 3)

            standardDeviation[3] = std4;

        else

            cout << "Fail!" << endl;

    }

}

    cout << " ";

}

void sort(Data arr[])

{

    Data temp;

    for (int i = 0; i < (SIZE - 1); i++)

    {

        for (int j = i + 1; j < SIZE; j++)

        {

            if (arr[i].last_name > arr[j].last_name)

            {

                temp = arr[i];   

                arr[i] = arr[j];

                arr[j] = temp;

            }

        }

    }

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote