#include #include // provides accumulate algorithm #include #include #include #include #include #include // provides isalpha using namespace std; class CharChecker { public: CharChecker(): alphas(0), digits(0), lowercase(0) {} void operator() (char c) { if (isalpha(c)) { alphas++; return;} if (isdigit(c)) { digits++; return;} if (islower(c)) { lowercase++; return;} } // no need to encapsulate private data since objects will be short-lived int alphas, digits, lowercase; }; void main() { vector v(30); srand(time(0)); generate(v.begin(), v.end(), rand); cout << "Random sequence of characters: " << endl; copy(v.begin(), v.end(), ostream_iterator(cout)); CharChecker cc = for_each(v.begin(), v.end(), CharChecker()); cout << endl << "Number of letters in above sequence: " << cc.alphas << endl << "Number of digits in above sequence: " << cc.digits << endl << "Number of lowercase letters: " << cc.lowercase << endl; vector v2(30); generate(v2.begin(), v2.end(), rand); cout << "Random sequence of integers: " << endl; copy(v2.begin(), v2.end(), ostream_iterator(cout, " ")); cout << endl << "Sum of integers: " << accumulate(v2.begin(), v2.end(), 0) << endl; }