Вариант с STL:
Код:

// я заметил что вы лепите все примеры в одну функцию - ОТВЫКАЙТЕ!
// тем самым вы усложняете себе понимание, а компилятору - работу
// будем считать что слово состоит только из букв
bool is_ru_alpha(int c) {
// кодировка win-1251
return unsigned(c - 'А') <= 63;
}
bool skipNotWord(streambuf& stm) {
do {
if (is_ru_alpha(stm.sgetc())) return true;
} while(0<=stm.sbumpc());
return false;
}
void getWord(streambuf& stm, string& output) {
output.clear();
while(is_ru_alpha(stm.sgetc()) {
output.push_back(char(stm.sbumpc()));
}
}
inline bool isVocal(const char& c) {
// а можно и таблично сделать
return c=='а' || c=='о' || c=='у' || c=='ы' || c=='и';
}
int main() {
streambuf* input = cin.rdbuf();
if (input) {
string word, max_word;
unsigned count, max_count=0;
while(skipNotWord(*input)) {
getWord(*input, word);
count = count_if(word.begin(), word.end(), isVocal);
if (max_count < count) {
max_count = count;
max_word = word;
}
}
}
if (max_count) {
cout << "found '" << max_word <<"' of " << max_count << " vocals" << endl;
} else {
cout << "not found word of vocals" << end;
}
}