Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

2. (Arrays of Pointers to Functions) You will modify the above program #1- Student Grade Calculation Program as follows: 1. You will use arrays of

2. (Arrays of Pointers to Functions) You will modify the above program #1- Student Grade Calculation Program as follows: 1. You will use arrays of pointers to functions to create a menu-driven interface to call 6 functions: 1) Print the array of grades 2) Find/Print the lowese test scores for all tests 3) Find/Print the highest test scores for all tests 4) Find/Print the average before dropping the lowest for each student 5) Find/Print the new average after dropping the lowest for each student 6) Find/Print the final letter grade using new average for each student (see output screen and the restriction below) 2. You need to write at least two funtions with pointers among above six functions. (for example, void minimum(unsigned int (*grades)[EXAMS], size_t pupils, size_t tests); 3. Write a printMenu function to call Menu Option screen. Note: 1) You might want to use an initialized array with data requested to test your program to save time. 2) One restriction on using arrays of pointers to functions is that all the pointers must have the sametype. The pointers must be to functions of the same return type that receive arguments of the sametype. For this reason, the functions in prog.#1 must be modified if they are not so that they return the same type and take the same parameters.

code:

#include #define STUDENTS 3 #define SCORE 4

//function prototypes int minimum(int grades[][SCORE], size_t pupils, size_t tests); int maximum(int grades[][SCORE], size_t pupils, size_t tests); double average(const int setOfGrades[], size_t tests); void printArray(int grades[][SCORE], size_t pupils, size_t tests); void getGrades(int[][SCORE]); double newAverage(const int setOfGrades[], int grades[][SCORE], size_t pupils, size_t tests);

//function main begins int main(void) {

void(*processGrades[1])(int[][SCORE], size_t, size_t) = { printArray };

size_t student;

//initialize student grades for three students int studentGrades[STUDENTS][SCORE] = {0};

getGrades(studentGrades);

//output array studentGrades puts("The array is:");

printArray(studentGrades, STUDENTS, SCORE);

//determine smallest and largest grade values printf(" Lowest grade: %d Highest grade: %d ", minimum(studentGrades, STUDENTS, SCORE), maximum(studentGrades, STUDENTS, SCORE));

// calculate average grade for each student for (student = 0; student < STUDENTS; ++student) {

printf(" The average grade for student %u is %.2f ", student, average(studentGrades[student], SCORE));

} // end for

for (student = 0; student < STUDENTS; ++student ) { printf(" The new Average for student %u is: %.2f ", student, newAverage); } return 0;

} // end main

void getGrades(int studentGrades[][SCORE]) {

int student = 0; int grade = 0; int testScore = 0;

while (student != -1) {

printf(" Enter the student, test number and test score "); printf("or enter -1 for the student to end input for the Student: "); printf(" StudentNumber: "); scanf_s("%d", &student);

studentGrades[student - 1][grade - 1] = testScore;

printf(" Test number: "); scanf_s("%d", &grade);

printf("Student Test Score: "); scanf_s("%d", &testScore);

}

}

//find minimum grade int minimum(int grades[][SCORE], size_t pupils, size_t tests) {

size_t i; size_t j; int lowGrade = 100;

//loop through rows of grades for (i = 0; i < pupils; ++i) {

// loop through columns of grades for (j = 0; j < tests; ++j) {

if (grades[i][j] < lowGrade) {

lowGrade = grades[i][j];

} // end if } // end inner for } // end outer for

return lowGrade; } // end function minimum

// find the maximum grade int maximum(int grades[][SCORE], size_t pupils, size_t tests) {

size_t i; size_t j; int highGrade = 0;

//loop through rows of grades for (i = 0; i < pupils; ++i) {

// loop through columns of grades for (j = 0; j < tests; ++j) {

if (grades[i][j] > highGrade) {

highGrade = grades[i][j];

} // end if } // end inner for } // end outer for

return highGrade; } // end function maximum

//determine the average grade for a particular student double average(const int setOfGrades[], size_t tests) {

size_t i; int total = 0;

//total all grades for one student for (i = 0; i < tests; ++i) {

total += setOfGrades[i];

} // end for

return (double)total / tests;

} // end function average

// print the array void printArray(int grades[][SCORE], size_t pupils, size_t tests) {

size_t i; size_t j;

//output column heads printf(" [0] [1] [2] [3]");

//output grades in tabular form for (i = 0; i < pupils; i++) {

//output label for row printf(" studentGrades[%d]", i);

//output grades for one student for (j = 0; j < tests; j++) { printf("%-5d", grades[i][j]); } // end inne for

} // end outer for

} // end function printArray

double newAverage(const int setOfGrades[], int grades[][SCORE], size_t pupils, size_t tests) {

size_t i; size_t j;

float avg2 = 0; int lowGrade = 100;

//loop through rows of grades for (i = 0; i < pupils; ++i) {

// loop through columns of grades for (j = 0; j < tests; ++j) {

if (grades[i][j] < lowGrade) {

lowGrade = grades[i][j];

} // end if } // end inner for } // end outer for

for (i = 0; i < tests; ++i) {

avg2 += setOfGrades[i];

avg2 -= lowGrade;

}

return double(avg2) / 3; }

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Oracle RMAN For Absolute Beginners

Authors: Darl Kuhn

1st Edition

1484207637, 9781484207635

More Books

Students also viewed these Databases questions

Question

5-56. Trudy, when she first saw the bull pawing the ground, ran.

Answered: 1 week ago