Hey everyone I'm struggling with arrays and need some help with this program. I really don't understand why this is giving me -nan for a output. Seems like whatever I try the input values are not being passed or stored so it can compute the average. And also, to find the highest and lowest would a bubble sort be better than a selection array as the test inputs are only 4 numbers? Thanks so much!
// This program will read in a group of test scores( positive integers from 1 to 100)
// from the keyboard and then calculates and outputs the average score
// as well as the highest and lowest score. There will be a maximum of 100 scores.
#include <iostream>
usingnamespace std;
typedefint GradeType[100]; // declares a new data type:
// an integer array of 100 elements
float findAverage (const GradeType, int); // finds average of all grades
int findHighest (const GradeType, int); // finds highest of all grades
int findLowest (const GradeType, int); // finds lowest of all grades
int main()
{
GradeType grades; // the array holding the grades.
int numberOfGrades; // the number of grades read.
int pos; // index to the array.
float avgOfGrades; // contains the average of the grades.
int highestGrade; // contains the highest grade.
int lowestGrade; // contains the lowest grade.
// Read in the values into the array
pos = 0;
cout << "Please input a grade from 1 to 100, (or -99 to stop)" << endl;
cin >> grades[pos];
while (grades[pos] != -99)
{
// Fill in the code to read the grades
cout << "Please input a grade from 1 to 100, (or -99 to stop)" << endl;
cin >> grades[pos];
}
numberOfGrades = pos; // Fill blank with appropriate identifier
// call to the function to find average
avgOfGrades = findAverage(grades, numberOfGrades);
cout << endl << "The average of all the grades is " << avgOfGrades << endl;
// Fill in the call to the function that calculates highest grade
highestGrade = findHighest(grades, numberOfGrades);
cout << endl << "The highest grade is " << highestGrade << endl;
// Fill in the call to the function that calculates lowest grade
lowestGrade = findLowest(grades,numberOfGrades);
// Fill in code to write the lowest to the screen
cout << "The lowest grade is " << lowestGrade << endl;
return 0;
}
//****************************************************************************
// findAverage
//
// task: This function receives an array of integers and its size.
// It finds and returns the average of the numbers in the array
// data in: array of floating point numbers
// data returned: avarage of the numbers in the array
//
//****************************************************************************
float findAverage (const GradeType array, int size)
{
float sum = 0; // holds the sum of all the numbers
for (int pos = 0; pos < size; pos++)
sum = sum + array[pos];
return (sum / size); //returns the average
}
//****************************************************************************
// findHighest
//
// task: This function receives an array of integers and its size.
// It finds and returns the highest value of the numbers in
// the array
// data in: array of floating point numbers
// data returned: highest value of the numbers in the array
//
//****************************************************************************
int findHighest (const GradeType array, int size)
{
// Fill in the code for this function
}
//****************************************************************************
// findLowest
//
// task: This function receives an array of integers and its size.
// It finds and returns the lowest value of the numbers in
// the array
// data in: array of floating point numbers
// data returned: lowest value of the numbers in the array
//
//****************************************************************************
int findLowest (const GradeType array, int size)
{
// Fill in the code for this function
}
Thanks so much but I cant seem to find out how to increment it... ):
I tried to increment it to this but the loop just keeps running even when -99 is the input.
1 2 3 4 5 6 7 8
while (grades[pos] != -99)
{
// Fill in the code to read the grades
cout << "Please input a grade from 1 to 100, (or -99 to stop)" << endl;
cin >> grades[pos++];
}
solved thank you so much for your help you're a life saver.
code turned out to be
1 2 3 4 5 6 7 8
while (grades[pos] != -99)
{
pos ++;
// Fill in the code to read the grades
cout << "Please input a grade from 1 to 100, (or -99 to stop)" << endl;
cin >> grades[pos];
}
You may also consider putting in a second while loop to catch any grades below zero, excluding -99, and anything above 100 should be excluded as well I assume.