void holdscrn( ) // void function to hold screen open before exit
{
char holdscreen;
cout << "\n\n\tEnter one character and press return to exit program: ";
cin >> holdscreen;
#include <iostream>
#include <iomanip>
#include <fstream> // *** added - required for std::ifstream
usingnamespace std;
void readData(ifstream& inputFile, int list[], int size);
void holdscrn( ); // void function to hold screen open before exit
void print(int list[], int size) ; // *** added - declare prior to use
int main()
{
int scores[8] = {0};
// ifstream infile; // *** modified
// infile.open("TestScoresData.txt"); // *** modified
ifstream infile( "TestScoresData.txt" ) ; // *** this is simpler
// if (infile) // ***
if( !infile ) // *** corrected - if infile is not in a good state
{
cout << "Cannot open the input file. Program terminates!"
<< endl;
holdscrn( ); // Hold screen before exit
return 1;
}
readData(infile, scores, 8);
print(scores, 8);
cout << endl;
// infile.close(); // *** this is not really required
// the file will be automagically closed at the end
holdscrn( ); // Hold screen before exit
// return 0; // *** this too is notr essential
// if there is no return, return 0 is implied
}
// *** the logic in this function is completely wrong
// *** you need to read the scores in the file into the array list
void readData(ifstream& inputFile, int list[], int size)
{
int score;
int index;
cin >> score;
while (inputFile)
{
index = score / 25;
if (index == size)
index--;
if (index < size)
list[index]++;
inputFile >> score;
}
// return 0; // *** removed
}
void print(int list[], int size)
{
int range;
int lowRange = 0;
int upperRange = 24;
cout << " Range # of Students" << endl;
for (range = 0; range < size; range++)
{
cout << setw(3) << lowRange << " - "
<< upperRange << setw(15)
<< list[range] << endl;
lowRange = upperRange + 1;
upperRange = upperRange + 25;
if (range == size - 2)
upperRange++;
}
cout << endl;
return;
}
void holdscrn( ) // void function to hold screen open before exit
{
char holdscreen;
cout << "\n\n\tEnter one character and press return to exit program: ";
cin >> holdscreen;
return;
}
However, the program logic in readData() (and maybe in print() too) is all wrong. Examine what the code is doing (perhaps print out intermediate values - for instance, what does the array contain after readData() returns?) and then make modifications so that it will do what it is supposed to do.