Write a fully modular C program that reads in a string of a defined size from the keyboard and reports how many times each letter of the alphabet occurs within that string (ignoring case). It should also report how many non-letters are included in the string.
Although this is a relatively simple problem, doing it well is slightly more complicated than it may look at first. Here are some hints:
· The obvious solution is simply to iterate through the string using a gigantic switch-case statement to increment one of 27 integer variables (one for each of the letters of the alphabet and an additional variable to store the non-alphabetic characters). This is the WRONG solution: it will work but it's a poor design and is inefficient and will NOT give you good marks.
· To solve the problem much more elegantly and with code that is a tiny fraction of the length, you first need to think about the data required to be stored. In particular, try to identify a certain complex data type that is well-suited to store large amounts of data all of the same type.
· Once you've done this, you then need to find a way of mapping each character in the string to the appropriate element in your data: this is actually much easier than it initially looks if you remember how character data is really stored internally and bear in mind the ordinal properties of the alphabetic characters of either case in the ASCII table (remember you can ignore case by simply converting the entire string to all one case).