This lab should provide you with practice in file handling, libraries, and random variate generation.
Write a program that allows the user to create files of random data. They should be offered a menu of possibilities:
1) create random Whole number data file 2) create random Decimal number data file 3) create random Character data file 4) Quit program
The first 3 options should ask for appropriate bounds. Your program should make sure they are in order before passing them to your random value generation function. (The overloaded ones we did in class, remember? — place these in a 'random' library.)
Then, ask how many random values to generate and what file to place them in. Assuming the file opened correctly, proceed to generate all requested random values.
The menu should continue to loop until the quit option is chosen. Options should be choosable by either the number or the capitalized word. (For example, to quit, they should be able to enter 4, Q, or q.)
How many functions are in your random library? Are they regular or inline functions? Do you need an implementation file for your library?
Are there any functions not immediately useful for these 4 options? Is this okay? Should you remove functions from a library just because a certain program doesn't use them?
Can you show why the integer and floating point formulas given in class actually work? Please do so...
How many files will you have open at any time during processing of a single menu option? (Adjust this answer if you take the programming option presented below.)
This assignment is (Level 2.5).
Add (Level 2) to add another option (shift the quit option down appropriately):
4) create random Name data file
This fourth option should ask for a file of given names and a file of family names. If both those files open successfully, ask how many names each person should have (given; given and family; given, middle, and family; etc.). (Hint: middle names are typically the same as most given names, but may occasionally be a family name. My estimate is 80% of middle names were once given names and the remaining 20% were probably family names.)
Once you know how many random names to create and what file to store them in (and that file opened successfully), you'll need to pick names from either the given name file or the family name file (or both) and store them to the output file. To do this quickly, it might help to pre-process the given/family name files to count how many of each you have and figure out where each name starts in the file (an index, perhaps?). Once you know how many names, you can pick a random one easily (a random integer between 0 and the number of names-1).
How would you create the index file(s)? (Hint: How do you create an index in general?)
When pre-processing a file (counting its elements, generating an index, etc.), how do you reset yourself to the beginning of the file? Is there an alternative method to closing and reopening it? Which is better and why?