//Natalie Zarate CSC 5 Chapter 10, P. 589, #4
/*******************************************************************************
* EVALUATE PHRASE
*
* This program will prompt the user for a phrase within 40 characters. With
* this phrase, the program will find and display the word count and average
* word length of the phrase.
*
* INPUT
* phrase - user inputted phrase
*
* OUPUT
* wordCount - given phrase's word count
* wordLengthAVg - given phrase's average word length
* ****************************************************************************/
#include <string>
#include <iostream>
#include <cctype>
using namespace std;
/*******************************************************************************
* countWords
* Counts the number of words in a given phrase
* _____________________________________________________________________________
* INPUT
* string - Pointer to the phrase
* letter - flag; indicates whether character is a letter or space
*
* OUTPUT
* words - Number of words in the given phrase.
* ****************************************************************************/
// Prototype for countWords
int countWords(const char *string);
/*******************************************************************************
* avgWordL
* This funtion calculates the average word length of the given phrase
* _____________________________________________________________________________
* INPUT
* string - pointer to given phrase
* words - phrase word count
* OUTPUT
* average - average word length
* ****************************************************************************/
// Prototype fot avgWordL
float avgWordL(const char *string, int words);
int main()
{
char phrase[41]; // INPUT - stores given phrase
int wordCount; // OUTPUT - word count of phrase
float wordLengthAvg; // OUTPUT - average word length
// Prompt user for phrase
cout << "Enter Phrase (40 Character Limit):" << endl;
// Get length of phrase
cin.getline(phrase,sizeof(phrase));
// Call countWords
wordCount = countWords(phrase);
// Display wordCount
cout << "WORD COUNT: " << wordCount << endl;
// Call avgWordL
wordLengthAvg = avgWordL(phrase, wordCount);
// Display average owrd length
cout << "AVERAGE WORD LENGTH: " << wordLengthAvg << endl;
return 0;
}
int countWords(const char *string)
{
int words = 0;
bool letter = false; // INPUT - flag; dictates whether current character is a
// letter or space
//Step through array
while (*string)
{
// Check if character is a string
if (isspace(*string))
{
//Character is a space/ not a letter
letter = false;
}
else if (!letter)
{
//Character is a letter
letter = true;
// Increment number of words
words++;
}
// Move to next element
string++;
}
return words;
}
float avgWordL(const char *string, int words)
{
int wordLength; // INPUT - length of word in given phrase
bool letter; // Flag; indicates whether a character is a letter or space
float average; // OUPUT - average word length in phrase
//Step through array
while(*string)
{
// Check if character is a space
if(isspace(*string))
{
// Character is a space
letter = false;
}
else
{
letter = true;
// Increment word length
wordLength++;
}
string++;
}
// Coumpute average word length
average = wordLength / words;
return average;
}