c++

posted by .

Your Mathematic school teacher want to use a program that can read the name and the mark of a student. Your teacher want the program to automatically find the grade of the mark and display the result(name, mark and grade). Help your teacher to develop a program that can solve his problem. The grading is as follow 80 – 100 A 60 – 79 B 40 – 59 C 0 – 39 D

  • c++ -

    #include "stdafx.h"
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <iomanip>
    #include <cmath>

    using namespace std;

    struct StudentData
    {
    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(StudentData[]);
    void getGrade(StudentData[]);
    void calcLowest(StudentData[], int &, int &, int &, int &, int[]);
    void calcHighest(StudentData[], int &, int &, int &, int &, int[]);
    void getAverage(StudentData[], int, double &, double &, double &, double &, double[]);
    void getStd(StudentData[], double &, double &, double &, double &, double &, double &, double &, double &, double[]);
    void print(StudentData[], int[], int[], double[], double[]);
    void sort(StudentData[]);

    int main()
    {
    // Variables
    StudentData arr[SIZE];
    int lowest1, lowest2, lowest3, lowest4; // Stores lowest exam scores
    int highest1, highest2, highest3, highest4; // Holds highest exam scores
    double average1 = 0, average2 = 0, average3 = 0, average4 = 0; // Represents average of each exam
    double std1 = 0, std2 = 0, std3 = 0, std4 = 0; // Holds standard deviation for Exams 1-3 and Total
    int lowest[INFO] = {};
    int highest[INFO] = {};
    double average[INFO] = {};
    double standardDeviation[INFO] = {};

    ifstream inFile;
    string inFileName = "C:\\Users\\Lisa\\Desktop\\scores.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 << "\n";

    // Print unsorted data
    print(arr, lowest, highest, average, standardDeviation);

    cout << "\n";

    // 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(StudentData 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(StudentData 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(StudentData 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;
    }
    }

    /**
    * Pre-condition:
    * Post-condition:
    */
    void calcHighest(StudentData 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(StudentData 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;
    }
    }

    /**
    * Pre-condition:
    * Post-condition:
    */
    void getStd(StudentData 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 << "\n";
    }

    /**
    * Pre-condition:
    * Post-condition:
    */
    void sort(StudentData arr[])
    {
    StudentData 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;
    }
    }
    }
    }

Respond to this Question

First Name
School Subject
Your Answer

Similar Questions

  1. English

    1. Write down the name of the building with a question mark. 2.Write down the name of the building marked with a question mark. 3. Write down the name of the building having a question mark. 4. Write down the name of the building which …
  2. Maths

    The teacher collected the test papers of 20 students and found that their average mark was 15. Before she wrote the marks in her mark book, she lost 1 paper. Find the mark for the missing paper, she worked out the average mark for …
  3. Computer

    Home work:- Write a program to read 5 records consists of first name, last name, id and grade. Assign the grade according to the following specifications: 0<g<= 50 F 50<g<=60 D 60< g<= 70 C 70<g<=90 B 90<g …
  4. visual basic programming

    Write a Visual Basic program that will calculate the assessment marks of a student taking the Computer Programming subject in College. The program must be able to determine the total result and finally display the grade of that student. …
  5. Computer/Math

    In an examination five pass grade and one fail is awarded a. For mark between 70 and 100 b. For mark between 60 and 69 c. For mark between 50 and 59 d. For mark between 45 and 49 e. For mark between 40 and 44. Write a program to input …
  6. Programming C++ using Data Structure.

    In an academic institution, Student has its records. Each student has his/her profile such as id number, student name. The institution also keeps records of student grades in each subject. Student grades contains information subject …
  7. Programming

    Scenario: Write a program that will determine the average mark of each student. The average is dependent on the subjects which the student has completed. The minimum amount of subjects is eight, and the maximum amount of subjects is …
  8. algebra

    write a c++ program which reads student name,ID ,mid,final for single course and for ten students and compute ;total mark &letter grade of each student;name student who scored maximum ;display maximum and minimum mark;display details …
  9. programming

    Example Develop a pseudocode algorithm for a program that accepts each of the average marks of 10 students in a class and computes the sum and the average mark of the class. The program should display the average mark of the class. …
  10. Math

    Monica wants to know what she needs to get on the exam to get a certain grade in her English class. The term Mark is worth 70% of the course and exam is worth 30%. The following is the formula used to calculate her overall Mark. Course …

More Similar Questions