我们给了一个具有任意长度str的字符串,任务是使用迭代方法和递归方法来计算给定字符串中辅音的数量。
辅音是不是元音的那些字母,即除a,i,e,o,u以外的字母都被视为辅音。因此,在下面的程序中,我们需要查找除字符串中的字母以外的其他字母的计数。
递归和迭代都重复执行指令集。递归是指函数中的语句重复调用自身时的情况。迭代是循环重复执行直到控制条件变为假。递归和迭代之间的主要区别在于,递归是一个过程,始终应用于函数,而迭代则应用于我们要重复执行的指令集。
Input − string str = “(cainiaojc.com)”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中,没有辅音可用,而是只有元音,因此count为0。
在一个变量中输入字符串,比如说str
使用该length()函数计算给定字符串的长度,该函数将根据字符串中的字符数返回一个整数值
取一个临时变量来存储元素的数量。
从i开始循环到0,直到我小于字符串的长度
在循环内部,检查IF str [i]是否辅音,然后将count的值增加1
返回计数
打印结果。
// Iterative CPP program
#include <iostream>
using namespace std;
//检查辅音的功能
bool consonant(char ch){
//处理小写字母
ch = toupper(ch);
return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90;
}
//计数辅音的功能
int countconsonants(string s){
int result = 0;
for (int i = 0; i < s.length(); i++){
//要检查字符是否为辅音
if (consonant(s[i])){
++result;
}
}
return result;
}
//主要功能
int main(){
string s = "wx abc def";
cout <<"count is: "<<countconsonants(s);
return 0;
}输出结果
如果运行上面的代码,我们将获得以下输出
count is: 6
在一个变量中输入字符串,比如说str
使用该length()函数计算给定字符串的长度,该函数将根据字符串中的字符数返回一个整数值
取一个临时变量来存储元素的数量。
创建一个递归函数,该函数将调用自身以计算字符串中的辅音
检查IF大小是否为1,然后返回str [0]。
然后,以(str,size-1)返回recursive_call_to_function +检查字符是否为字符串(str [size-1])
// Recursive CPP program
#include <iostream>
using namespace std;
//检查辅音的功能
bool consonant(char ch){
//转换小写
ch = toupper(ch);
return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90;
}
//计算辅音总数
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