To make telephone numbers easier to remember, some companies use letters to show their telephone number. For example, using letters, the telephone number 438-5626 can be shown as GET LOAN. In some cases, to make a telephone number meaningful, companies might use more than seven letters. For example, 225-5466 can be displayed as CALL HOME, which uses eight letters. Write a program that prompts the user to enter a telephone number expressed in letters and outputs the corresponding telephone number in digits. If the user enters more than seven letters, then process only the first seven letters. Also output the – (hyphen) after the third digit. Allow the user to use both uppercase and lowercase letters as well as spaces between words. Moreover, your program should process as many telephone numbers as the user wants
I'll second firedraco's suggestion. If you enter "the loan" as a phone number, cin >> word only extracts "the", and as that string is considerably smaller than the 7 characters you're processing per word you're accessing the string with indices that are out of bounds.
A while loop would be more appropriate than a for loop.
I'd rather suggest you think out the algorithm you need to process the strings and try to implement it yourself. At that point, I'm sure you'll find many people willing to help. You might begin by looking up std::getline to see how it'll fit in.