The trick to exercise 7 is that we must setup and use C’s strcmp function correctly. The problem with C++ is that when using C++’s string compare functions, you are really just comparing address’s, not the string’s themselves. To get around this we use <cstring> along with strcmp() to compare to strings. If two string arguments in strcmp() are identical, strcmp() returns a 0. So, we look for an instance when it is not zero. You could technically still use <string> here and get a good solution, but you may run into issues in other scenarios . Here is my solution below:
7. Write a program that uses an array of char and a loop to read one word at a time until the word done is entered. The program should then report the number of words entered (not counting done). A sample run could look like this:
Enter words (to stop, type the word done): anteater birthday category dumpster envy finagle geometry done for sure You entered a total of 7 words. You should include the cstring header file and use the strcmp() function to make the comparison test.
#include <iostream> #include <cstring> using namespace std; int main() { char input[100]; int words = 0; char compare[] = "done"; cout << "Enter words (to stop, type the word done):" << endl; cin >> input; while(strcmp(input,compare)!=0) { cin >> input; words++; }; cout << "You entered a total of " << words << " words " << endl; cin.get(); return 0; }