Để đế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
ptrtrỏ đến đầu chuỗistr.- Vòng lặp chạy cho đến khi gặp ký tự null
'\0'. *ptrlấ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;
}