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

Đếm nguyên âm trong chuỗi dùng con trỏ (Pointer) trong C++

Để đếm số nguyên âm trong chuỗi dùng con trỏ, cần hiểu: chuỗi là mảng ký tự, nguyên âm là {a,e,i,o,u} (và in hoa), con trỏ lưu địa chỉ bộ nhớ của biến.

Duyệt chuỗi qua con trỏ, so sánh từng ký tự với tập nguyên âm, khớp thì tăng bộ đếm.

Điều kiện: Code dưới yêu cầu chuỗi toàn chữ thường. Nếu có chữ hoa, dùng tolower().

Code ví dụ

#include <iostream>
#include <cctype> // cho tolower()
using namespace std;

int main() {
    char str[] = "i love tutorials point";
    char *ptr = str;
    int count = 0;
    
    for(ptr = str; *ptr != '\0'; ptr++) {
        char c = tolower(*ptr); // Hỗ trợ cả chữ hoa
        if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
            count++;
        }
    }
    
    cout << "So nguyen am trong chuoi: " << count;
    return 0;
}

Kết quả

So nguyen am trong chuoi: 9

Giải thích

  • ptr trỏ đến đầu chuỗi str.
  • Vòng lặp chạy cho đến khi gặp ký tự null '\0'.
  • *ptr lấy giá trị ký tự tại vị trí con trỏ.
  • ptr++ di chuyển con trỏ sang ký tự tiếp theo.
  • tolower() đảm bảo xử lý cả chữ hoa.

Phiên bản dùng std::string

#include <iostream>
#include <string>
#include <cctype>
using namespace std;

int countVowels(const string &s) {
    int count = 0;
    for (char c : s) {
        c = tolower(c);
        if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')
            count++;
    }
    return count;
}

int main() {
    string str;
    cout << "Nhap chuoi: ";
    getline(cin, str);
    cout << "So nguyen am: " << countVowels(str);
    return 0;
}