954,505 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

reading file I/O

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++;
rogenie
Light Poster
33 posts since Oct 2007
Reputation Points: 30
Solved Threads: 0
 

probably cos it's wrong.

Post all your code.

iamthwee
Posting Expert
5,950 posts since Aug 2005
Reputation Points: 1,543
Solved Threads: 439
 

you probably didn't initialize totalNumber when declaring it

int totalNumber = 0;
Ancient Dragon
Retired & Loving It
Team Colleague
30,049 posts since Aug 2005
Reputation Points: 5,662
Solved Threads: 2,343
 

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;
}
rogenie
Light Poster
33 posts since Oct 2007
Reputation Points: 30
Solved Threads: 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.

Ancient Dragon
Retired & Loving It
Team Colleague
30,049 posts since Aug 2005
Reputation Points: 5,662
Solved Threads: 2,343
 

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.

rogenie
Light Poster
33 posts since Oct 2007
Reputation Points: 30
Solved Threads: 0
 

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.

Ancient Dragon
Retired & Loving It
Team Colleague
30,049 posts since Aug 2005
Reputation Points: 5,662
Solved Threads: 2,343
 

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:)

rogenie
Light Poster
33 posts since Oct 2007
Reputation Points: 30
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You