Răspuns :
Atunci cand dai strchr(voc,s[i]), tu nu verifici daca cuvantul e format doar din vocale,ci de fapt verifici daca s[i] este vocala.Asa ca vom folosi un contor care incepe de la 0 pt cate cuvinte doar din vocale sunt si vom folosi nr, ca si contor de cate vocale sunt in cuvant.
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("doarvocale.in");
ofstream fout("doarvocale.out");
char s[31];
char voc[] = "aeiou";
int i, n, k;
int nr, cnt;
int main() {
fin >> n ;
fin.get() ;
for (k = 1 ; k <= n; k++) {
fin.getline(s, 31);
nr = 0 ;
for (i = 0 ; i < strlen(s) ; ++ i){
if (strchr(voc, s[i])){
nr ++ ; //daca litera e vocala
}
}
if (strlen(s) == nr) //daca toate literele au fost vocale
cnt ++ ;
}
fout << cnt ;
return 0;
}
Pot sa fac o solutie mai eficienta.Daca esti curios sa imi spui.