用最少的元音打印单词
Print the words with a minimum number of vowels
我试图解决一个问题,即基于元音的最小数量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?
}
}
}
}
起初,我创建了一个函数来检查字符是否是字母。在那之后,我有一段时间迭代文件中的所有单词,a验证每个单词,如果它是一个单词,那么这个单词应该保存在另一个变量中,我做错了:(如果它没有找到另一个单词的话,那就意味着这个单词结束了,它应该检查元音,如果它至少有k个元音,就打印这个单词。(。我的问题是,我保存单词的方式不起作用,最后我应该以某种方式重置单词变量,这样另一个单词就会保存在那里。
我会将单词存储在一个映射中,字符串是元音的数量,是数据。
然后,可以很容易地在地图上迭代,打印数据值小于或等于k
的所有单词。
第一部分可以通过逐字阅读来完成(只需使用标准格式的输入运算符>>
读取字符串(,并计算该单词的元音。然后将字符串vovel计数对插入到映射中。
相关文章:
- 按单词搜索文件,然后在C++中打印特定行数
- 如何打印 BFS 路径本身而不是此单词梯的路径长度?
- 用最少的元音打印单词
- 延迟逐个字符打印单词
- 我的控制台正在打印随机单词以及没有执行正确的数学运算
- 如何在 STL 中使用reverse_iterator打印单词
- 如果该行包含特定单词 (C++),请打印该行
- 用句子从单词打印单词
- 打印所有可能有 4 个字母的单词的时间太多
- 打印出使用地图实现的Trie中的所有单词
- 如何在带有给定特定前缀的向量中打印出单词
- 使用Trie打印所有字典的单词
- (C++) 打印字符数组字符串的单词时出现问题
- 动态分配的数组C 读取句子并打印单词
- 如何将消息发送到缓冲区并反向打印前三个单词的消息
- 打印以 "a" 开头的单词(字符串中)
- 打印由用户定义的数组,第一个数字确定单词的大小,第二个数字确定行的大小
- 如何在单词中打印元音
- 从结构上打印单词
- 我编写了一个C++程序来打印单词字母的排列.我想知道是否有其他更简单的方法可以做到这一点