Files and Arrays

Please support our C++ advertiser: Intel Parallel Studio Home
Thread Solved

Join Date: Jun 2008
Posts: 92
Reputation: JackDurden is an unknown quantity at this point 
Solved Threads: 0
JackDurden JackDurden is offline Offline
Junior Poster in Training

Files and Arrays

 
0
  #1
Jul 28th, 2008
When I run this program I can only access the first row of data. Can any one help so that I can access all the lines? I am trying to store numbers into a 2-dimensional array.


#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>

using namespace std;


int main ()
{
	ifstream inData;
	float numbers[25][10];
	int rows=0,cols;
	
	inData.open("data.txt");

	while (inData){
		for (rows=0; rows<=7; rows++){
			for (cols=0; cols<=7; cols++)
			{ 
		inData >> numbers[rows][cols];
		cout<<fixed<<showpoint<<setprecision(1)<<numbers[rows][cols]<<" ";
	
			}
		cout<<endl;
		}
	
	}
	cout<<endl;
	cout<<fixed<<showpoint<<setprecision(1)<<numbers[0][1];
	
return 0;
}
Last edited by JackDurden; Jul 28th, 2008 at 10:19 pm.
Reply With Quote Quick reply to this message  
Join Date: Aug 2005
Posts: 15,472
Reputation: Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute 
Solved Threads: 1477
Team Colleague
Featured Poster
Ancient Dragon's Avatar
Ancient Dragon Ancient Dragon is offline Offline
Still Learning

Re: Files and Arrays

 
0
  #2
Jul 28th, 2008
How about this one? But this has the danget of writing outside the bounds of the array, so you need to add more checkiing.
  1. rows = cols = 0;
  2. while( infile >> numbers[rows][cols])
  3. {
  4. cols++;
  5. if(cols > 7)
  6. {
  7. cols = 0;
  8. rows++;
  9. }
  10. }
Don't PM me with questions -- you might get a nasty PM in response. If you have a question then post it in one of the forums.
Reply With Quote Quick reply to this message  
Join Date: Oct 2007
Posts: 280
Reputation: joshmo is an unknown quantity at this point 
Solved Threads: 19
joshmo joshmo is offline Offline
Posting Whiz in Training

Re: Files and Arrays

 
0
  #3
Jul 29th, 2008
It looks like you have declared an array of 25 rows and 10 columns. I'd suggest you intialize the rows to their value(rows=25) and columns (cols=10). Try my example
  1. for (i=0; i<=rows; i++)
  2. {
  3. for (j=0; j<=cols; cols++)
  4. {
  5. inData >> numbers[i][j];
  6. cout<<fixed<<showpoint<<setprecision(1)<<numbers[i][j]<<" ";
  7.  
  8. }
  9. }
dont forget to declare your array numbers[rows][cols]
Last edited by joshmo; Jul 29th, 2008 at 4:42 am.
Reply With Quote Quick reply to this message  
Join Date: Jun 2008
Posts: 92
Reputation: JackDurden is an unknown quantity at this point 
Solved Threads: 0
JackDurden JackDurden is offline Offline
Junior Poster in Training

Re: Files and Arrays

 
0
  #4
Jul 29th, 2008
That seems to have done it! Thanks for the help!
Reply With Quote Quick reply to this message  
Join Date: Aug 2005
Posts: 15,472
Reputation: Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute Ancient Dragon has a reputation beyond repute 
Solved Threads: 1477
Team Colleague
Featured Poster
Ancient Dragon's Avatar
Ancient Dragon Ancient Dragon is offline Offline
Still Learning

Re: Files and Arrays

 
0
  #5
Jul 29th, 2008
>> for (i=0; i<=rows; i++)

I hope you realize that is going to cause data overflow errors which might possibly crash your program or destroy other parts of your program if that code is incorporated into a larger program. Why? Because the loop performs one too many iterations -- if the value of rows is 25 then the above loop will count from 0 to 26, which is one too many. Same with the inner j loop.

What you want is this:
for (i=0; i < rows; i++)
Then there is the danger that the data file doesn't contain that many numbers (rows * columns).
Don't PM me with questions -- you might get a nasty PM in response. If you have a question then post it in one of the forums.
Reply With Quote Quick reply to this message  
Join Date: Oct 2007
Posts: 280
Reputation: joshmo is an unknown quantity at this point 
Solved Threads: 19
joshmo joshmo is offline Offline
Posting Whiz in Training

Re: Files and Arrays

 
0
  #6
Jul 29th, 2008
Originally Posted by Ancient Dragon View Post
>> for (i=0; i<=rows; i++)

I hope you realize that is going to cause data overflow errors which might possibly crash your program or destroy other parts of your program if that code is incorporated into a larger program. Why? Because the loop performs one too many iterations -- if the value of rows is 25 then the above loop will count from 0 to 26, which is one too many. Same with the inner j loop.

What you want is this:
for (i=0; i < rows; i++)
Then there is the danger that the data file doesn't contain that many numbers (rows * columns).
Thanks for the correction. I happened to have edited the OP's code without putting in mind the the syntax...I meant to pass on the logic
Reply With Quote Quick reply to this message  
Reply

This thread has been marked solved.
Perhaps start a new thread instead?
Message:


Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC