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

C++ Instructions: Convert all of the arrays to dynamic arrays. Don’t forget to d

ID: 3917788 • Letter: C

Question

C++

Instructions:

Convert all of the arrays to dynamic arrays. Don’t forget to delete the dynamic memory before your program ends.

You must have three regular functions, one for getting the data on the four students, one for calculating the GPA, and one for the output. One of the functions must be recursive.

CODE:

#include "stdafx.h"

#include <iostream>

#include <iomanip>

using namespace std;

float readGradRecur(int);

void displayGPA(const char *[], float[]);

inline float fCalculateGPA(float totGrade) { return totGrade / 5.0; };

inline void ProgramHeader() {

cout << "Programmed by ... " <<

"Student GPA Calculator. " << "Enter five (5) alphabetical (ABCDF) " <<

"grades for each student. " << flush;

};

int main()

{

const char *students[4] = { "Freddie", "Jane", "Jonathan", "Mary" };

float totalGrads[4] = { 0.0, 0.0, 0.0, 0.0 };

int itr;

for (int itr1 = 0; itr1 < 4; itr1++)

{

cout << " " << students[itr1] << " " << flush;

itr = 0;

totalGrads[itr1] = readGradRecur(itr++);

cout << " *****" << totalGrads[itr1] << endl << endl;

}

displayGPA(students, totalGrads);

cout << endl;

system("pause");

return 0;

}

float readGradRecur(int inpGradeNum)

{

char inpGrade;

if (inpGradeNum < 5)

{

cout << " Please enter grade " << (inpGradeNum + 1) << ": " << flush;

cin >> inpGrade;

switch (inpGrade)

{

case 'A':

case 'a':

return readGradRecur(inpGradeNum + 1) + 4.0;

break;

case 'B':

case 'b':

return readGradRecur(inpGradeNum + 1) + 3.0;

break;

case 'C':

case 'c':

return readGradRecur(inpGradeNum + 1) + 2.0;

break;

case 'D':

case 'd':

return readGradRecur(inpGradeNum + 1) + 1.0;

break;

case 'F':

case 'f':

return readGradRecur(inpGradeNum + 1) + 0.0;

break;

default:

cout << " Error: Grade should be A, B, C, D or F." << " " << flush;

return readGradRecur(inpGradeNum);

}

}

else

{

return 0.0;

}

}

void displayGPA(const char *studentName[], float gpaTot[])

{

cout << " GPA of the students: " <<

setw(12) << setiosflags(ios::fixed | ios::left) << " Student"

<< " GPA " << " --------- ----- " << flush;

for (int vi = 0; vi < 4; vi++)

{

cout << " " << setw(12) << setiosflags(ios::fixed | ios::left) << studentName[vi] <<

setiosflags(ios::fixed | ios::showpoint) <<

setprecision(3) << fCalculateGPA(gpaTot[vi]) << " " << flush;

}

}

Explanation / Answer

If you have any doubts, please give me comment...

#include "stdafx.h"

#include <iostream>

#include <cstring>

#include <iomanip>

using namespace std;

float readGradRecur(int);

void displayGPA(char **, float[]);

inline float fCalculateGPA(float totGrade) { return totGrade / 5.0; };

inline void ProgramHeader()

{

cout << "Programmed by ... "

<< "Student GPA Calculator. "

<< "Enter five (5) alphabetical (ABCDF) "

<< "grades for each student. "

<< flush;

};

int main()

{

char **students = new char*[4];

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

students[i] = new char[100];

// { "Freddie", "Jane", "Jonathan", "Mary" };

strcpy(students[0], "Freddie");

strcpy(students[1], "Jane");

strcpy(students[2], "Jonathan");

strcpy(students[3], "Mary");

float *totalGrads = new float[4];

int itr;

for (int itr1 = 0; itr1 < 4; itr1++)

{

cout << " " << students[itr1] << " "

<< flush;

itr = 0;

totalGrads[itr1] = readGradRecur(itr++);

cout << " *****" << totalGrads[itr1] << endl

<< endl;

}

displayGPA(students, totalGrads);

cout << endl;

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

        delete[] students[i];// each array of characters

    delete [] students;

delete totalGrads;

// system("pause");

return 0;

}

float readGradRecur(int inpGradeNum)

{

char inpGrade;

if (inpGradeNum < 5)

{

cout << " Please enter grade " << (inpGradeNum + 1) << ": " << flush;

cin >> inpGrade;

switch (inpGrade)

{

case 'A':

case 'a':

return readGradRecur(inpGradeNum + 1) + 4.0;

break;

case 'B':

case 'b':

return readGradRecur(inpGradeNum + 1) + 3.0;

break;

case 'C':

case 'c':

return readGradRecur(inpGradeNum + 1) + 2.0;

break;

case 'D':

case 'd':

return readGradRecur(inpGradeNum + 1) + 1.0;

break;

case 'F':

case 'f':

return readGradRecur(inpGradeNum + 1) + 0.0;

break;

default:

cout << " Error: Grade should be A, B, C, D or F."

<< " "

<< flush;

return readGradRecur(inpGradeNum);

}

}

else

{

return 0.0;

}

}

void displayGPA(char **studentName, float gpaTot[])

{

cout << " GPA of the students: "

<< setw(12) << setiosflags(ios::fixed | ios::left) << " Student"

<< " GPA "

<< " --------- ----- "

<< flush;

for (int vi = 0; vi < 4; vi++)

{

cout << " " << setw(12) << setiosflags(ios::fixed | ios::left) << studentName[vi] << setiosflags(ios::fixed | ios::showpoint) << setprecision(3) << fCalculateGPA(gpaTot[vi]) << " "

<< flush;

}

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Chat Now And Get Quote