Chapter 8: Programming Projects =============================== :: 1. Write a structure, **struct card**, that will represent a card in a standard deck of playing cards. You will need to represent both the suit (clubs, diamonds, hearts, or spades) as well as the rank (A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3, 2) of each card. Note that a deck of playing cards can be represented as an array declared as struct card deck[52]; Using the above structure write a program that will present a menu with the following options: 1. Deal Five Cards 2. Deal Seven Cards 3. Quit the Game Enter Selection: If the user selects either of the deal options, the program will call a function that performs a perfect shuffle of the deck. In a perfect shuffle, the deck is broken exactly in half and rearranged so that the first card is followed by the 27th card, followed by the second card, followed by the 28th card, and so on. The program then asks for how many players are at the table. There can be no more than seven players at the table and no less than three players. The program will then deal cards, either five cards per player or seven cards per player depending upon the menu selection, to the players at the table. The dealer, the program, always is dealt to last. Using a simple scoring method of where A=11, K=Q=J=10, and all other cards are of face value, compute and display which hand holds the most points. 2. You have been hired to help program a new "Ma Bell" telephone feature. The feature allows users with a "PC" to obtain a disk of telephone numbers in addition to a telephone book. Your job is to write the program which will allow the phone information to be used. You must allow the addition of and viewing of phone number information. The program should be able to: 1. Add people to the telephone list 2. View all people in the list 3. View based on just the last name You may make the following assumptions: 1. There are no more than 100 phone numbers 2. No name is longer than 50 characters. 3. Only one telephone number per person. 4. The address should be broken into only street # or po box street name zip code 3. Write a program that uses C++ syntax and that creates an index for lines of text. The program must prompt for a topic, no more than twenty characters and blanks are allowed. The topic will be passed through a hashing algorithm. The hashing algorithm will add together the ASCII values of the characters composing the topic. The resultant number will be used in a modulo division where the divisor will be fifty (50), the maximum number of topics allowed. The result of the modulo division, which is the remainder will be used as the index into the topic index array, which has 50 elements. Each topic is used to compute its location within the topic index array. The program will then prompt for the input of a text string. The text string will be read into a character array, **kbdBuffer**, that is setup for a maximum of 256 characters. The program will use **new** in conjunction with **strlen** to allocate space from the heap that will hold the number of characters being held in **kbdBuffer**. The data will be transferred from **kbdBuffer** to the allocated space. The address of the allocated space will be stored into an array of pointers to character type data, which holds 50 pointers. The index computed from the topic string will also be used to determine the array index where the address of the allocated space will be stored. A maximum of fifty topics and associated text strings can be input. The user can terminate the input of topics early if desired. After the termination of topic input, show the contents of the topic array and the associated text string. Only show one screen full at a time. The letter 'n' or 'N' can be used to proceed to the next page of topics and strings. The input of the letter 'q' or 'Q' will quit the program.