C++ 用最少数量的元音打印单词

C++ 用最少数量的元音打印单词,c++,algorithm,counting,C++,Algorithm,Counting,我试图解决一个问题,基于一个k数,即最小元音数,将打印出至少有k个元音的所有单词。 因此,例如: Input: with k=2 cars are...really nice Output: are really nice 我想我已经很接近了,但是我在保存单词和检查元音数量方面遇到了一些问题。 代码如下: int is_letter(char c) { if (('a' <= c && c <= 'z') || ('A' <= c &

我试图解决一个问题,基于一个k数,即最小元音数,将打印出至少有k个元音的所有单词。 因此,例如:

Input: with k=2
  cars are...really nice

Output: 
 are
 really
 nice
我想我已经很接近了,但是我在保存单词和检查元音数量方面遇到了一些问题。 代码如下:

int is_letter(char c) {
  if (('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z'))
    return 1;
  return 0;
}


int main(){


    ifstream fin("dateTest.in");
    char s[250];
    char word[250];
    int k;
    fin>>k;
    int nrVowels=0;

    while(fin>>s){
         int n = strlen(s);
         int have_word = 0;

          for (int i = 0; i < n; ++i){
            if (is_letter(s[i])){
              have_word = 1;
              word[i]+=s[i]; //Here i'm having some problems

            }else if (have_word == 1) {
              for(int i=0; i<strlen(word); i++){
                 if (word[i] == 'a' ||  word[i] == 'e' ||  word[i] == 'o' ||  word[i] == 'i' || word[i] == 'u'){
                        nrVowels++;

                        if(nrVowels >= k){
                            cout<<word;
                        }
              }
            }
             have_word = 0;
             //Here i should somehow reset the word variable?
        }
      }
    }
}
int是字母(字符c){
如果(('a's){
int n=strlen(s);
int有_字=0;
对于(int i=0;icout我会将单词存储在a中,字符串是元音的数量,数据是元音的数量

然后可以很容易地在地图上迭代,打印数据值小于或等于
k
的所有单词



第一部分可以通过逐字阅读来完成(只需使用标准格式的输入运算符
>
读入a),并计算该单词的元音。然后将字符串vovel count对插入地图中。

需要从文件中读取单词:(@TrSorin这有什么区别?@TrSorin输入流中的输入流就是输入流。所有的输入流都是一样的,不管它是
std::cin
还是从
std::ifstream
创建的对象。哦,好的,我会尝试这样做,但是从文件中读取单词是一个困难requirement@TrSorin输入代码以读取在一个单独的函数中输入,该函数以
std::istream&
作为参数。然后传递
std::cin
来测试代码。一旦它起作用,您可以使用
std::ifstream
打开一个文件并传递它。函数本身根本不需要任何修改。我不确定您为什么要尝试将单词从“s”复制到“word”。在任何时候,“s”都包含您感兴趣的文本。您可以在该数组中查找元音,而不是在“word”中查找元音。同样,您可以输出“s”。打印单词后不要忘记“中断”for循环。