0

Hello I am looking to read a file into a 2d array to show which spaces have been taken/ haven't taken whiey will show a # if not taken and a T if taken, so far I just have a text file I created which shows like this:

T # # T
T T T #

All I am trying to do at the moment is to read this into a 2d array and display it as above, later on I will allow users to choose a position and take a space of the layout (changing a T to a #) and then I will want to save it to the file to make the changes.

But at the moment all I want to do is show it, this is what I have so far, I appologize if it's messy, I have made so many changes now to try and get it to work.

I hope someone can offer som guideance.

void Layout::layoutset(void)
    {   

ifstream myFile ("layout.txt", ios::in);
myFile.precision(2);
myFile.setf(ios::fixed, ios::showpoint);

myFile >> spaceLayout[2][5];
while (!myFile.eof())


myFile >> //Don't know what to put here
while (!myFile.eof())
{
for (int r = 0; r<2; r++)
{
for (int c = 0; c < 5; c++)
{
spaceLayout[r][c] = //?Don't know what to put here
}
}
}
myFile.close();
} 
3
Contributors
6
Replies
10
Views
4 Years
Discussion Span
Last Post by adityatandon
0

Delete lines 5 and 6. There are no floating point values anywhere in this problem.

Line 8 - I assume you are trying to declare a 2 x 5 array? Shouldn't this be 2 x 4? That's what you have in your example. Change line 8 to this.

char spaceLayout[2][4];

Lines 9 and 13 - Having a while (!myFile.eof()) loop condition doesn't make sense to me here. You know your size. 2 x 4. You already have a nested for-loop. Use it. You know the size in advance, so don't bother with any end-of-file tests.

This should do..

for (int r = 0; r<2; r++)
{
    for (int c = 0; c < 4; c++)
    {
        myFile >> spaceLayout[r][c];
    }
}
0

Thanks for your help, I have ammended my code and nothing seems to be displaying at all, here is what I have now, I have now made the text file a direct directory just incase it was looking in a different location and still no luck.

My example was bad, it was meant to be:

T # # T #
T T T # T

(I obviously can't count)

Here is what I have now:

void Layout::layoutset(void)
    {    
ifstream myFile ("F:\MyApp\Debug\layout.txt", ios::in);
myFile >> spaceLayout[2][5];
{
for (int r = 0; r<2; r++)
{
for (int c = 0; c < 5; c++)
{
myFile >> spaceLayout[r][c];

}
}
myFile.close();
} 

} 

Oh and the text file is formatted exactly like the text file on two rows and with a space after each character, is this correct formatting?

Edited by nathaniscool99

0

Line 4 needs to be this...

char spaceLayout[2][5];

The rest of it looks OK. It won't display anything though. To display, after line 16, you can add this.

for(int r = 0; r < 2; r++)
{
    for(int c = 0; c < 5; c++)
    {
        cout << spaceLayout[r][c] << " ";
    }
    cout << "\n";
}
0

This still isn't showing the data it now shows something which looks like this
|[ |[ |[ |[ |[
|[ |[ |[ |[ |[

Here is what I have:

void Seats::layoutset(void)


    {    
ifstream myFile ("F:\MyApp\Debug\layout.txt", ios::in);
char spaceLayout [2] [5];   
{
for (int r = 0; r<2; r++)
{
for (int c = 0; c < 5; c++)
{
myFile >> spaceLayout[r][c];
}
}
myFile.close();
} 
for(int r = 0; r < 2; r++)
{
    for(int c = 0; c < 5; c++)
    {
        cout << spaceLayout[r][c] << " ";
    }
    cout << "\n";
}
} 
0

Line 5. You are not escaping the '\' character. You need to. You should be getting warnings. Try changing it to this...

ifstream myFile ("F:\\MyApp\\Debug\\layout.txt", ios::in);

Note that there are two, not one slashes between each directory. Since '\' is the escape character, if you want to the program to treat a '\' as backslash and NOT as the escape token, you need to put two of them in, not one. See if that change does anything.

0

Dude.. dont look into the text file.. It'll probably show weird symbols and characters.. Its the computers way of storing data... U'd probably have entered stuff like : 12, Jake is a monster, I dont like him ... etc But wt u'll see in the text file when u see it manually is !@#$%^&*.. Its the computers way of minimising data storage memory !! Also.. if u want to read something which was stored in a file by using a structure or class or array, it cant be read out just like a normal text file.. U need to know the contents of the structure or the array... Thats probably where ur going wrong..

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.