book question:
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.
teachers added notes:
Make sure that you use pointers in the program wherever possible.
The program is to ask the user for the number of test scores.
MY PROBLEM:
had similar submission, but i changed code around a bit. my problem is no errors, but it's not showing average. also if you could make sure i used pointers where ever possible that be great.
#include <iostream>
#include <iomanip>
usingnamespace std;
void arrSelectSort(double *, int);
void showArrPtr(double *, int);
double showAverage(double, int);
int main()
{
double *scores, //To dynamically allocate an array
total = 0.0, //Accumulator
average; //To hold the averge scores
int numScores; //To hold the number of test scores
//Get the number of test scores.
cout << "How many test scores would you like to process?";
cin >> numScores;
//Dynamically allocate an array large enough to hold that many test scores
scores = newdouble[numScores];
if (scores == NULL)
return 0;
//Get the test score for each test
cout << "Enter the test scores below.\n";
for (int count = 0; count < numScores; count++)
{
cout << "Test score #" << (count + 1) << ": ";
cin >> scores[count];
while (scores[count] <= 0)
{
cout << "Zero or negative numbers not accepted.\n";
cout << "Test Score #" << (count + 1) << ": ";
cin >> scores[count];
}
}
//Calculate the total scores
for (int count = 0; count < numScores; count++)
{
total += scores[count];
}
//sort the elements of the array pointers
arrSelectSort(scores, numScores);
cout << "The test scores in ascending order are: \n";
showArrPtr(scores, numScores);
showAverage(total, numScores);
return 0;
}
void arrSelectSort(double *array, int size)
{
int startScan, minIndex;
double minElem;
for (startScan = 0; startScan < (size - 1); startScan++)
{
minIndex = startScan;
minElem = array[startScan];
for (int index = startScan + 1; index < size; index++)
{
if (array[index] < minElem)
{
minElem = array[index];
minIndex = index;
}
}
array[minIndex] = array[startScan];
array[startScan] = minElem;
}
}
void showArrPtr(double *array, int size)
{
for (int count = 0; count< size; count++)
cout << array[count] << " ";
cout << endl;
}
double showAverage(double total, int numScores)
{
double average;
//Calculate the average
average = total / numScores;
return average;
//Display the results.
cout << fixed << showpoint << setprecision(2);
cout << "Average Score: " << average << endl;
system("pause");
}
#include <iostream>
#include <iomanip>
usingnamespace std;
void arrSelectSort(double *, int);
void showArrPtr(double *, int);
void showAverage(double, int);
int main()
{
double *scores, //To dynamically allocate an array
total = 0.0; //Accumulator
//average; //To hold the averge scores
int numScores; //To hold the number of test scores
//Get the number of test scores.
cout << "How many test scores would you like to process?";
cin >> numScores;
//Dynamically allocate an array large enough to hold that many test scores
scores = newdouble[numScores];
if (scores == NULL)
return 0;
//Get the test score for each test
cout << "Enter the test scores below.\n";
for (int count = 0; count < numScores; count++)
{
cout << "Test score #" << (count + 1) << ": ";
cin >> *(scores + count);
}
//Calculate the total scores
for (int count = 0; count < numScores; count++)
{
total += *(scores + count);
}
showAverage(total, numScores);
//sort the elements of the array pointers
arrSelectSort(scores, numScores);
cout << "The test scores in ascending order are: \n";
showArrPtr(scores, numScores);
//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 numScores)
{
double average;
//Calculate the average
average = total / numScores;
//Display the results.
cout << fixed << showpoint << setprecision(2);
cout << "Average Score: " << average << endl;
}
you don't have to change to a bubble sort, but me and the teacher couldn't figure out after a few needed changes why my program wasn't working. changed to a bubble sort and come to realize I had an asterisk inside a one of the array + count codes