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
广告