View Full Version : Conceptual Question: using Arrays in C++
Apr 19, 2011, 09:06 PM
Yes, this is part of a hw problem for class but I just need help in understanding where to go with this, not actual code. I'm given a file that lists lat and long data for states, as well a line that indicates the state (sample shown). The goal is to create a program, using arrays only I believe (not structs), that asks a user to input the state in the command line and the program draws the outline of the state in a window based on the coordinates (drawing is done via a custom library they provide us). I understand the basics of inputing data into an array but I'm at a loss of how to go about dealing with the state labels, and how/if the labels are used selecting the correct data to draw with. Any help would be appreciated. thanks
Apr 19, 2011, 09:23 PM
Are you supposed to buffer up the whole file in memory, or search the file after the user inputs the state?
If you're buffering the whole thing an approach would be:
Or combine the coordinates:
float coordinates[MAXPOINTS]; //0 is for latitude, 1 is for longitude
Then when the user enters the abbreviation you find the position in the co-arrays then display based on that. Probably write a function that takes the coordinates for the one state to format for display.
Otherwise, just search the file and read into the float array(s).
Apr 19, 2011, 09:32 PM
The "BF&I (Brute Force & Ignorant)" approach:
Read and ignore lines until the desired state abbreviation appears on a line by itself.
Read, parse, and draw lat/lon pairs until terminator appears (-1 -1).
The "Parallel Arrays" approach.
Read a line. Does it look like a state abbreviation or a lat/lon pair?
If a state abbreviation, store it in an array of state abbreviations,
then commence reading lat/lon pairs into an array of lat/lon coords
for this state, stopping at terminator.
Store that array into another parallel array.
"Parallel array" means an array with a different name and type than the state-name array, but whose items have the same index as the corresponding state name. So the name for AK is at index 0, and the array of coords for AK is also at index 0, but in a different array. (This is a BF&I approach to structuring data, when structs or objects are much clearer and more encapsulated. It's the kind of BS you'd do in old-school BASIC programs where the only composite data structure was an array.)
And I'm wondering what the data for Michigan looks like, or really any state with islands or discontiguous land areas.
Apr 19, 2011, 09:43 PM
(This is a BF&I approach to structuring data, when structs or objects are much clearer and more encapsulated. It's the kind of BS you'd do in old-school BASIC programs where the only composite data structure was an array.)
LOL. You got me remembering about BASIC as soon as I saw parallel arrays. :)
In the interests of KISS, I would recommended chown33's first BF&I approach, considering the state is one the command-line and the program won't have to make multiple lookups.
If the OP gets that to work, fork the code and try to the parallel arrays approach. Lee's given you the data structures for this. But really I wouldn't bother. For reals, you wouldn't do it this way.
Apr 20, 2011, 09:19 AM
Thanks! going to try and tackle it this afternoon. FYI the states are really blocky and cartoon shaped so its by no means accurate lol.