C++中字符串辅音计数(迭代和递归方法)


给定一个字符串,例如长度任意的str,任务是使用迭代和递归方法计算给定字符串中辅音的个数。

辅音是指不是元音的字母,即除了a、i、e、o、u之外的字母都被认为是辅音。所以在下面的程序中,我们需要找到字符串中除了这些字母以外的字母个数。

递归和迭代都重复执行指令集。递归是指函数中的语句重复调用自身。迭代是指循环重复执行,直到控制条件变为假。递归和迭代的主要区别在于,递归是一个过程,总是应用于函数,而迭代则应用于我们想要重复执行的指令集。

例如

Input − string str = “tutorials point”
Output − count is 8

说明 − 在给定的字符串str中,共有8个辅音字母,它们是t、t、r、l、s、p、n和t。

Input − string str = “a e io u”
Output − count is 0

说明 − 在给定的字符串str中,没有辅音字母,只有元音字母,所以个数为0。

迭代

下面程序中使用的方法如下

  • 将字符串输入到变量中,例如str

  • 使用length()函数计算给定字符串的长度,该函数将根据字符串中的字符数返回一个整数值

  • 取一个临时变量来存储元素的计数。

  • 从i=0开始循环,直到i小于字符串的长度

  • 在循环内,检查IF str[i]是辅音,则将计数的值加1

  • 返回计数

  • 打印结果。

示例

 在线演示

// Iterative CPP program
#include <iostream>
using namespace std;
// Function to check for consonant
bool consonant(char ch){
   // To handle lower case
   ch = toupper(ch);
   return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90;
}
//function to count consonant
int countconsonants(string s){
   int result = 0;
   for (int i = 0; i < s.length(); i++){
      // To check is character is Consonant
      if (consonant(s[i])){
         ++result;
      }
   }
   return result;
}
// main function
int main(){
   string s = "wx abc def";
   cout <<"count is: "<<countconsonants(s);
   return 0;
}

输出

如果我们运行上面的代码,我们将得到以下输出

count is: 6

递归

下面程序中使用的方法如下

  • 将字符串输入到变量中,例如str

  • 使用length()函数计算给定字符串的长度,该函数将根据字符串中的字符数返回一个整数值

  • 取一个临时变量来存储元素的计数。

  • 创建一个递归函数,它将调用自身来计算字符串中的辅音。

  • 检查IF大小为1,则返回str[0]。

  • 然后,返回recursive_call_to_function为(str, size-1) + 检查字符是否为字符串(str[size-1])

示例

 在线演示

// Recursive CPP program
#include <iostream>
using namespace std;
// Function to check for consonant
bool consonant(char ch){
   // To convert the lower case
   ch = toupper(ch);
   return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90;
}
// to count total number of consonants
int consonantcount(string str, int n){
   if (n == 1){
      return consonant(str[0]);
   }
   return consonantcount(str, n - 1) +
   consonant(str[n-1]);
}
int main(){
   string str = "wx abc def";
   cout <<"count is: "<<consonantcount(str, str.length());
   return 0;
}

输出

如果我们运行上面的代码,我们将得到以下输出:

count is: 6

更新于:2020年5月15日

619 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告