#include <iostream>
#include <cstring>
#include <cctype>
using namespace std;
int countWords(const char *str, double &avgLetters) {
int words = 0;
int letters = 0;
bool inWord = false;
// Iterates through entire string till null terminator
for (int i = 0; str[i] != '\0'; i++) {
// Skips over white spaces
if (isspace(str[i])) {
inWord = false;
// counts the number of words
if (letters > 0) {
words++;
avgLetters += letters;
letters = 0;
}
}
// checks for words
else if (!inWord) {
inWord = true;
}
// Counts letters
letters++;
}
if (letters > 0) {
words++;
avgLetters += letters;
}
return words;
}
int main() {
char str[250]; // Character length is 250
cout << "Enter a string: ";
cin.getline(str, 250);
double avgLetters = 0;
int wordCount = countWords(str, avgLetters);
if (wordCount > 0) {
avgLetters /= wordCount;
}
cout << "Number of words: " << wordCount << endl;
cout << "Average number of letters in each word: " << avgLetters << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGNjdHlwZT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBjb3VudFdvcmRzKGNvbnN0IGNoYXIgKnN0ciwgZG91YmxlICZhdmdMZXR0ZXJzKSB7CiAgICBpbnQgd29yZHMgPSAwOwogICAgaW50IGxldHRlcnMgPSAwOwogICAgYm9vbCBpbldvcmQgPSBmYWxzZTsKCiAgICAvLyBJdGVyYXRlcyB0aHJvdWdoIGVudGlyZSBzdHJpbmcgdGlsbCBudWxsIHRlcm1pbmF0b3IKICAgIGZvciAoaW50IGkgPSAwOyBzdHJbaV0gIT0gJ1wwJzsgaSsrKSB7CiAgICAgICAgLy8gU2tpcHMgb3ZlciB3aGl0ZSBzcGFjZXMKICAgICAgICBpZiAoaXNzcGFjZShzdHJbaV0pKSB7CiAgICAgICAgICAgIGluV29yZCA9IGZhbHNlOwogICAgICAgICAgICAvLyBjb3VudHMgdGhlIG51bWJlciBvZiB3b3JkcwogICAgICAgICAgICBpZiAobGV0dGVycyA+IDApIHsKICAgICAgICAgICAgICAgIHdvcmRzKys7CiAgICAgICAgICAgICAgICBhdmdMZXR0ZXJzICs9IGxldHRlcnM7CiAgICAgICAgICAgICAgICBsZXR0ZXJzID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBjaGVja3MgZm9yIHdvcmRzCiAgICAgICAgZWxzZSBpZiAoIWluV29yZCkgewogICAgICAgICAgICBpbldvcmQgPSB0cnVlOwogICAgICAgIH0KICAgICAgICAvLyBDb3VudHMgbGV0dGVycwogICAgICAgIGxldHRlcnMrKzsKICAgIH0KCiAgICAKICAgIGlmIChsZXR0ZXJzID4gMCkgewogICAgICAgIHdvcmRzKys7CiAgICAgICAgYXZnTGV0dGVycyArPSBsZXR0ZXJzOwogICAgfQoKICAgIHJldHVybiB3b3JkczsKfQoKaW50IG1haW4oKSB7CiAgICBjaGFyIHN0clsyNTBdOyAvLyBDaGFyYWN0ZXIgbGVuZ3RoIGlzIDI1MAoKICAgIGNvdXQgPDwgIkVudGVyIGEgc3RyaW5nOiAiOwogICAgY2luLmdldGxpbmUoc3RyLCAyNTApOwoKICAgIGRvdWJsZSBhdmdMZXR0ZXJzID0gMDsKICAgIGludCB3b3JkQ291bnQgPSBjb3VudFdvcmRzKHN0ciwgYXZnTGV0dGVycyk7CgogICAgaWYgKHdvcmRDb3VudCA+IDApIHsKICAgICAgICBhdmdMZXR0ZXJzIC89IHdvcmRDb3VudDsKICAgIH0KCiAgICBjb3V0IDw8ICJOdW1iZXIgb2Ygd29yZHM6ICIgPDwgd29yZENvdW50IDw8IGVuZGw7CiAgICBjb3V0IDw8ICJBdmVyYWdlIG51bWJlciBvZiBsZXR0ZXJzIGluIGVhY2ggd29yZDogIiA8PCBhdmdMZXR0ZXJzIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K