Here’s another random fact that I’m going to share about myself. I went to North Hollywood High School (NHHS) Highly Gifted Magnet (HGM) for school. You probably are wondering what is a Highly Gifted Magnet and how does one get there? You take an IQ test and if you get at least a 150 (which is genius level), you are eligible to get in.
Believe it or not, at one point, I tested to that level. (That is probably before all of these adult beverages got into my system, probably lowering that mark. =]) Well, the reason I mention this is because we recently just celebrated our 25 year class reunion! Twentyfive years is more time than some of you reading this have been alive, which makes me a fossil to you at this point. (Yes, your professor has jokes and is self-deprecating. =])
The thing about a reunion is that it is a big game of trying to figure out who is doing what now, what happened to a certain person, and what are the stories and memories that you take from that time. It’s a fun game indeed.
There are also other games that you can play. Take word games, like Scrabble and Words with Friends, that require rearranging a combination of letters to make a word.
This type of arrangement is generally referred to as an anagram, while it's known as a permutation in mathematics. This assignment will give you some experience thinking about and writing recursive functions. Write a C++ program that searches for "anagrams" in a dictionary. An anagram is a word obtained by scrambling the letters of some string. For example, the word "pot'' is an anagram of the string "otp." A sample run of the program is given below. Your output does not have to be formatted exactly the same as that shown in the sample, but it should be in a similar style. You can use words.txt as your dictionary file and anagrams.cpp as an example of a main program.
Since the purpose of this assignment is to give you experience using recursion, you may not use any of C++'s iteration constructs ( do , while , for , and goto ) or any STL algorithms (if you have no idea what this means, you're OK). In fact, similar to homework #2, you may only use the substr() and size()/length() functions in the string class. All repetition must be accomplished using recursion. This applies to every operation in the program, even file operations. Obviously, you would never write a program like this in industry but as an exercise it should be useful to gain experience
with recursion.
Sample Runs
Here are two examples of how the program might work:
Please enter a string for an anagram: rat
Matching word art
Matching word rat
Matching word tar
Please enter a string for an anagram: regardless
No matches found
Requirements
You must write these three functions with the exact same function signature (include case):
int vocabularyCreator(istream &dictfile, string dict[]);
Puts each string in dictfile into the array dict . Returns the number of words
read into dict . This number should not be larger than MAXDICTWORDS since that is the size of the array.
int potentialSequences(string word, const string dict[], int
size, string results[]);
Puts all the possibilities of word which are found in dict into results . Returns
the number of matched words found. This number should not be larger than
MAXRESULTS since that is the size of the array. The size is the number of words inside the dict array.
void outcomeDisclosure(const string results[], int size);
Displays size number of strings from results . The results can be printed in
any order.