Write a program that dynamically allocates an array large enough to hold a user-defined number of test scores. Once all the scores are entered, the array should be passed to a function that sorts them in ascending order. Another function should be called that calculates the average score. The program should display the sorted list of scores and averages with appropriate headings. Use pointer notation rather than array notation whenever possible. Input Validation: Do not accept negative numbers for test scores.

Respuesta :

Answer:

C++ Program

Explanation:

#include <iostream>

#include <iomanip>

using namespace std;

void arrSelectSort(double *, int);

void showArrPtr(double *, int);

void showAverage(double, int);

int main()

{

 //dynamically allocate an array

 //acumulator

 //averge scores

 //number of test scores

 

 double *scores,                        

 total = 0.0;                  

//average;                              

int nScores;                      

 

   //Get how many test scores the users wants to enter.

cout << "How many test scores would you like to process?";

cin >> nScores;

//condition about the scores

scores = new double[nScores];

if (scores == NULL)

 return 0;

//Get the number of each test

cout << "Enter the test scores below.\n";

 

 

 

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

{

 cout << "Test score #" << (count + 1) << ": ";

 cin >> *(scores + count);

 

}

 

//total score operation

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

{

 total += *(scores + count);

}

showAverage(total, nScores);

//the array pointers

arrSelectSort(scores, nScores);

cout << "the ascending order is: \n";

showArrPtr(scores, nScores);

 

//free memory.

delete[] scores;

scores = 0;

 

 

return 0;

 

}

// bubble sort  

void arrSelectSort(double *array, int size)

{

int temp;

bool swap;

do

{

 swap = false;

 for (int count = 0; count < (size - 1); count++)

 {

  if (*(array + count) > *(array + count + 1))

  {

   temp = *(array + count);

   *(array + count) = *(array + count + 1);

   *(array + count + 1) = temp;

   swap = true;

  }

 }

} while (swap);

}

// sort function

void showArrPtr(double *array, int size)

{

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

 cout << *(array + count) << " ";

cout << endl;

}

// average function

void showAverage(double total, int nScores)

{

double average;

//average operation

average = total / nScores;

 

//Display the results.

cout << fixed << showpoint << setprecision(2);

cout << "Average Score: " << average << endl;

}

Q&A Education