why does this file outputs 516?? The value of numbers is being read from random.txt that has 200 random numbers in it. I was expecting this to output 200 and NOT 516.. whats up with this?

while (inputFile >> number)
{
//number of numbers on the  file
for (totalNumber = 0; totalNumber <= number; ++totalNumber)
totalNumber++;

## All 7 Replies probably cos it's wrong.

you probably didn't initialize totalNumber when declaring it

int totalNumber = 0;

well here is the code. It outputs 516 instead of 200 random numbers I am trying to read off random.txt file.

//This will read the file random.txt,
//then it will tell you the number of numbers in the file
//it will sum it up
//and give the average number

# include <iostream>
# include <fstream>
using namespace std;

int main()
{
ifstream inputFile;
int number;
int totalNumber = 0;
int sumNumber = 0;
double average;

inputFile.open("C:\\random.txt");
if (!inputFile)
cout << "Error opening file\n";
else
{
while (inputFile >> number)
{
//number of numbers
for (totalNumber = 0; totalNumber <= number; ++totalNumber)
totalNumber++;

//sum of numbers
sumNumber = sumNumber + number;

//average
average = sumNumber/totalNumber;
}
inputFile.close();
cout << "There are " << totalNumber << " in random.txt file" << endl;
cout << "The sum of all these numbers is: " << sumNumber << endl;
cout << "The average is: " << average << endl;
}
return 0;
}

All you have to do inside the loop that starts on line 23 is (1) total up the value of all the numbers read from the file, which line 30 does ok, and (2) count how many numbers are read from the file, which line 27 does. Then after the file reading is finished you need to calculate the average, which line 33 does do, but its in the wrong place in your program (move it down below line 34 so that its outside the loop). That means line 26 is completly useless, and in fact destroys the value of totalNumber accumulator, so delete line 26.

Hi thanks. I tried putting the average calculation inside the while loop and it still worked. The line 26 is the one giving problem when I was trying to find out the total of numbers inside the file. Thanks.

It is true that the average calculation will work inside the loop, but its a waste of processing time to leave it there. If a teacher wants to find the average grade of all students for a given test she/he does not recalculate the average every time a student's grade is added to the total. No because that's such a waste of her time. Instead she will wait until all student's grades are summed up then divide that total by the number of students.

Oh I see what you are saying. Every time the loop iterates, the average calculation will also calculate since it is a part of a loop. Instead having it outside the loop makes it look better and would be a good programming practice:)

commented: Exactly! Now you have the right idea. +20
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.