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

Modify your program from Exercise 1 so that it reads the information from the gr

ID: 3677877 • Letter: M

Question

Modify your program from Exercise 1 so that it reads the information from the gradfile.txt file, reading until the end of file is encountered. You will need to first retrieve this file from the Lab 7 folder and place it in the same folder as your C++ source code. Run the program.

I have the following code, but my data file is not being read. Please help! The values in the datafile are

90
45
73
21
62

// 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>

#include <fstream>
using namespace std;

typedef int 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.


   ifstream dataFile;
   dataFile.open("gradfile.txt");
   if (! dataFile)
   {
       cout << "Error: Can't open the file named gradfile.txt. ";
       exit(1);
   }

   // Read in the values into the array

   pos = 0;
   dataFile >> grades[pos];

   while (grades[pos] != -99)
   {

       pos++;
       dataFile >> grades[pos];

   }

   numberOfGrades = pos;

   // call to the function to find average

   avgOfGrades = findAverage(grades, numberOfGrades);

   cout << endl << "The average of all the grades is " << avgOfGrades << endl;


   highestGrade = findHighest(grades, numberOfGrades);


   cout << endl << "The highest grade is " << highestGrade << endl;


   lowestGrade = findLowest(grades, numberOfGrades);

   cout << "The lowest grade is " << lowestGrade << endl;

   system("pause");

   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)

{

   int highestgrade = array[0];

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

       if (array[pos] > highestgrade)
       {
           highestgrade = array[pos];
       }

   return highestgrade;

}


//****************************************************************************
// 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)

{
   int lowestgrade = array[0];
   for (int pos = 0; pos > size; pos++)

       if (array[pos] < lowestgrade)
       {
           lowestgrade = array[pos];
       }

   return lowestgrade;
}

Explanation / Answer

#include <iostream>

#include <fstream>
using namespace std;

typedef int 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.


fstream dataFile;
   dataFile.open("gradfile.txt", ios::out | ios::app | ios::binary);
   if (! dataFile)
   {
       cout << "Error: Can't open the file named gradfile.txt. ";
       exit(1);
   }

   // Read in the values into the array

   pos = 0;
   dataFile >> grades[pos];

   while (grades[pos] != -99)
   {

       pos++;
       dataFile >> grades[pos];

   }

   numberOfGrades = pos;

   // call to the function to find average

   avgOfGrades = findAverage(grades, numberOfGrades);

   cout << endl << "The average of all the grades is " << avgOfGrades << endl;


   highestGrade = findHighest(grades, numberOfGrades);


   cout << endl << "The highest grade is " << highestGrade << endl;


   lowestGrade = findLowest(grades, numberOfGrades);

   cout << "The lowest grade is " << lowestGrade << endl;

   system("pause");

   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)

{

   int highestgrade = array[0];

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

       if (array[pos] > highestgrade)
       {
           highestgrade = array[pos];
       }

   return highestgrade;

}


//****************************************************************************
// 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)

{
   int lowestgrade = array[0];
   for (int pos = 0; pos > size; pos++)

       if (array[pos] < lowestgrade)
       {
           lowestgrade = array[pos];
       }

   return lowestgrade;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote