#include <iostream>
#include <string>
#include <cctype>
class ConsoleReader {
public:
std::string readLine() const {
std::string input;
std::cout << "Enter a line of text: ";
std::getline(std::cin, input);
return input;
}
};
class VowelCounter {
public:
int countVowels(const std::string& text) const {
int count = 0;
for (char ch : text) {
char lower = static_cast<char>(std::tolower(static_cast<unsigned char>(ch)));
if (lower == 'a' || lower == 'e' || lower == 'i' ||
lower == 'o' || lower == 'u') {
++count;
}
}
return count;
}
};
class ResultFormatter {
public:
std::string format(const std::string& originalText, int vowelCount) const {
return "The string \"" + originalText + "\" contains "
+ std::to_string(vowelCount) + " vowels.";
}
};
class ConsolePrinter {
public:
void print(const std::string& message) const {
std::cout << message << std::endl;
}
};
int main() {
ConsoleReader reader;
VowelCounter counter;
ResultFormatter formatter;
ConsolePrinter printer;
std::string text = reader.readLine();
int vowels = counter.countVowels(text);
std::string output = formatter.format(text, vowels);
printer.print(output);
return 0;
}