Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm phụ âm trong chuỗi C++ (Lặp và Đệ quy)

Cho chuỗi str. Đếm số phụ âm (không phải nguyên âm a, e, i, o, u) bằng phương pháp lặp và đệ quy.

Ví dụ

"tutorials point" → 8 phụ âm (t, t, r, l, s, p, n, t)

"a e io u" → 0 phụ âm

Phương pháp lặp (Iterative)

  • Duyệt từng ký tự, kiểm tra là chữ cái và không phải nguyên âm.
  • Hàm consonant(ch): chuyển chữ hoa, trả về true nếu không phải A,E,I,O,U và trong khoảng A-Z.

Phương pháp đệ quy (Recursive)

  • Base case: n == 1 → trả về consonant(str[0]).
  • Recursive: consonantcount(str, n-1) + consonant(str[n-1]).

Ví dụ minh họa - Lặp (C++)

#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;
}

Đầu ra

count is: 6

Ví dụ minh họa - Đệ quy (C++)

#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;
}

Đầu ra

count is: 6